Class: Olyx::Guardrails::Notification::DeliveryDispatcher
- Inherits:
-
Object
- Object
- Olyx::Guardrails::Notification::DeliveryDispatcher
- Defined in:
- lib/olyx/guardrails/notification/delivery_dispatcher.rb
Overview
Isolates handler failures and produces immutable delivery summaries.
Instance Method Summary collapse
- #call(event) ⇒ Object
- #failure(error) ⇒ Object
-
#initialize(handlers, sanitizer) ⇒ DeliveryDispatcher
constructor
A new instance of DeliveryDispatcher.
Constructor Details
#initialize(handlers, sanitizer) ⇒ DeliveryDispatcher
Returns a new instance of DeliveryDispatcher.
8 9 10 11 |
# File 'lib/olyx/guardrails/notification/delivery_dispatcher.rb', line 8 def initialize(handlers, sanitizer) @handlers = handlers @sanitizer = sanitizer end |
Instance Method Details
#call(event) ⇒ Object
13 14 15 16 17 |
# File 'lib/olyx/guardrails/notification/delivery_dispatcher.rb', line 13 def call(event) deliveries = @handlers.map { |name, handler| deliver(name, handler, event) }.freeze success = deliveries.all? { |delivery| delivery[:success] } { success: success, event: event, deliveries: deliveries }.freeze end |
#failure(error) ⇒ Object
19 20 21 |
# File 'lib/olyx/guardrails/notification/delivery_dispatcher.rb', line 19 def failure(error) { success: false, error: safe_error(error), deliveries: [].freeze }.freeze end |