Class: CodexNotify::DestinationResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/codex_notify/destination_resolver.rb

Defined Under Namespace

Classes: Error, Resolution

Instance Method Summary collapse

Constructor Details

#initialize(selection_sources:, profile_sources:, default_sources:) ⇒ DestinationResolver

Returns a new instance of DestinationResolver.



18
19
20
21
22
# File 'lib/codex_notify/destination_resolver.rb', line 18

def initialize(selection_sources:, profile_sources:, default_sources:)
  @selection_sources = selection_sources
  @profile_sources = profile_sources
  @default_sources = default_sources
end

Instance Method Details

#resolve(destination:, token:, channel:) ⇒ Object



24
25
26
27
28
29
30
31
# File 'lib/codex_notify/destination_resolver.rb', line 24

def resolve(destination:, token:, channel:)
  selected = destination || selection_sources.lookup('CODEX_NOTIFY_DESTINATION')&.value
  return resolve_default(token:, channel:) unless selected

  resolve_profile(DestinationName.normalize(selected), token:, channel:)
rescue DestinationName::Error => e
  raise Error, e.message
end