Class: Mammoth::WebhookSink
- Inherits:
-
Object
- Object
- Mammoth::WebhookSink
- Defined in:
- lib/mammoth/webhook_sink.rb
Overview
Delivers normalized Mammoth events to a webhook endpoint.
Constant Summary collapse
- SUCCESS_RANGE =
HTTP status range treated as successful webhook delivery.
200..299
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#timeout_seconds ⇒ Object
readonly
Returns the value of attribute timeout_seconds.
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Class Method Summary collapse
-
.from_config(config) ⇒ Mammoth::WebhookSink
Build a sink from Mammoth configuration.
Instance Method Summary collapse
-
#deliver(event) ⇒ Hash
Deliver an event to the webhook endpoint.
-
#deliver_transaction(envelope) ⇒ Hash
Deliver a transaction envelope to the webhook endpoint.
-
#initialize(name:, url:, timeout_seconds: 5) ⇒ WebhookSink
constructor
A new instance of WebhookSink.
Constructor Details
#initialize(name:, url:, timeout_seconds: 5) ⇒ WebhookSink
Returns a new instance of WebhookSink.
19 20 21 22 23 |
# File 'lib/mammoth/webhook_sink.rb', line 19 def initialize(name:, url:, timeout_seconds: 5) @name = name @url = URI(url) @timeout_seconds = timeout_seconds end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
14 15 16 |
# File 'lib/mammoth/webhook_sink.rb', line 14 def name @name end |
#timeout_seconds ⇒ Object (readonly)
Returns the value of attribute timeout_seconds.
14 15 16 |
# File 'lib/mammoth/webhook_sink.rb', line 14 def timeout_seconds @timeout_seconds end |
#url ⇒ Object (readonly)
Returns the value of attribute url.
14 15 16 |
# File 'lib/mammoth/webhook_sink.rb', line 14 def url @url end |
Class Method Details
.from_config(config) ⇒ Mammoth::WebhookSink
Build a sink from Mammoth configuration.
29 30 31 32 33 34 35 |
# File 'lib/mammoth/webhook_sink.rb', line 29 def self.from_config(config) new( name: config.dig("webhook", "name"), url: config.dig("webhook", "url"), timeout_seconds: config.dig("webhook", "timeout_seconds") ) end |
Instance Method Details
#deliver(event) ⇒ Hash
Deliver an event to the webhook endpoint.
42 43 44 |
# File 'lib/mammoth/webhook_sink.rb', line 42 def deliver(event) deliver_payload(EventSerializer.call(event)) end |
#deliver_transaction(envelope) ⇒ Hash
Deliver a transaction envelope to the webhook endpoint.
51 52 53 |
# File 'lib/mammoth/webhook_sink.rb', line 51 def deliver_transaction(envelope) deliver_payload(TransactionEnvelopeSerializer.call(envelope)) end |