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,
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, Sender, Subscription
Constant Summary
collapse
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.configuration ⇒ Object
Also known as:
config
13
14
15
|
# File 'lib/rails_webhook_outbox.rb', line 13
def configuration
@configuration ||= Configuration.new
end
|
19
20
21
|
# File 'lib/rails_webhook_outbox.rb', line 19
def configure
yield(configuration)
end
|
.dispatch(event, payload) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/rails_webhook_outbox.rb', line 43
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
23
24
25
|
# File 'lib/rails_webhook_outbox.rb', line 23
def reset_configuration!
@configuration = Configuration.new
end
|
.validate_event!(event) ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/rails_webhook_outbox.rb', line 27
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
35
36
37
38
39
40
41
|
# File 'lib/rails_webhook_outbox.rb', line 35
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
|