Class: Olyx::Guardrails::Notification::DeliveryDispatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/olyx/guardrails/notification/delivery_dispatcher.rb

Overview

Isolates handler failures and produces immutable delivery summaries.

Instance Method Summary collapse

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