Module: RailsWebhookOutbox
- Defined in:
- lib/rails_webhook_outbox.rb,
lib/rails_webhook_outbox/engine.rb,
lib/rails_webhook_outbox/sender.rb,
lib/rails_webhook_outbox/testing.rb,
lib/rails_webhook_outbox/version.rb,
lib/rails_webhook_outbox/signature.rb,
lib/rails_webhook_outbox/dispatchable.rb,
lib/rails_webhook_outbox/configuration.rb,
lib/rails_webhook_outbox/delivery_error.rb,
app/models/rails_webhook_outbox/delivery.rb,
app/jobs/rails_webhook_outbox/delivery_job.rb,
lib/rails_webhook_outbox/payload_size_error.rb,
app/models/rails_webhook_outbox/subscription.rb,
app/jobs/rails_webhook_outbox/application_job.rb,
lib/rails_webhook_outbox/secret_rotation_error.rb,
app/models/rails_webhook_outbox/application_record.rb,
app/mailers/rails_webhook_outbox/application_mailer.rb,
app/controllers/rails_webhook_outbox/application_controller.rb,
lib/generators/rails_webhook_outbox/install/install_generator.rb
Defined Under Namespace
Modules: Dispatchable, Generators, Signature, Testing
Classes: ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, Configuration, Delivery, DeliveryError, DeliveryJob, Engine, PayloadSizeError, SecretRotationError, Sender, Subscription
Constant Summary
collapse
- VERSION =
"0.3.0"
Class Method Summary
collapse
Class Method Details
.configuration ⇒ Object
Also known as:
config
14
15
16
|
# File 'lib/rails_webhook_outbox.rb', line 14
def configuration
@configuration ||= Configuration.new
end
|
20
21
22
|
# File 'lib/rails_webhook_outbox.rb', line 20
def configure
yield(configuration)
end
|
.dispatch(event, payload) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/rails_webhook_outbox.rb', line 44
def dispatch(event, payload)
validate_event!(event)
validate_payload_size!(payload)
if config.test_mode
Testing.deliveries << { event: event.to_s, payload: payload }
return
end
Subscription.active.each do |subscription|
next unless subscription.subscribes_to?(event)
delivery = Delivery.create!(
subscription: subscription,
event: event,
payload: payload
)
DeliveryJob.perform_later(delivery)
end
end
|
.reset_configuration! ⇒ Object
24
25
26
|
# File 'lib/rails_webhook_outbox.rb', line 24
def reset_configuration!
@configuration = Configuration.new
end
|
.validate_event!(event) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/rails_webhook_outbox.rb', line 28
def validate_event!(event)
registered = config.events
return if registered.empty?
return if registered.include?(event.to_s)
raise ArgumentError, "Unknown event #{event.inspect}. Registered events: #{registered.join(", ")}"
end
|
.validate_payload_size!(payload) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/rails_webhook_outbox.rb', line 36
def validate_payload_size!(payload)
max = config.max_payload_size
return unless max && max > 0
size = JSON.generate(payload).bytesize
raise PayloadSizeError.new(size, max) if size > max
end
|