Module: CommandTower::Messaging::Channels
- Defined in:
- app/services/command_tower/messaging/channels.rb,
app/services/command_tower/messaging/channels/error.rb,
app/services/command_tower/messaging/channels/definition.rb,
app/services/command_tower/messaging/channels/unknown_channel_error.rb
Defined Under Namespace
Classes: Definition, Error, UnknownChannelError
Constant Summary collapse
- DEFINITIONS =
identity_backed: readiness uses User Identity facts. supports_endpoint_records: Endpoint Platform may persist ledger rows. SMS is Identity-owned only (like email) — not an Endpoint Platform channel.
[ Definition.new( key: "inbox", label: "Inbox", kind: :inbox, supports_endpoint_records: false, identity_backed: false, canonical_provider: nil, ), Definition.new( key: "email", label: "Email", kind: :external, supports_endpoint_records: false, identity_backed: true, canonical_provider: "smtp", ), Definition.new( key: "sms", label: "SMS", kind: :external, supports_endpoint_records: false, identity_backed: true, canonical_provider: "twilio", ), Definition.new( key: "push", label: "Push", kind: :external, supports_endpoint_records: true, identity_backed: false, canonical_provider: "expo", ), Definition.new( key: "pushover", label: "Pushover", kind: :external, supports_endpoint_records: true, identity_backed: false, canonical_provider: "pushover", ), ].map(&:freeze).freeze
- INDEX =
DEFINITIONS.index_by(&:key).freeze
Class Method Summary collapse
- .definitions ⇒ Object
- .external_keys ⇒ Object
- .fetch(key) ⇒ Object
- .fetch!(key) ⇒ Object
- .keys ⇒ Object
- .known?(key) ⇒ Boolean
Class Method Details
.definitions ⇒ Object
80 81 82 |
# File 'app/services/command_tower/messaging/channels.rb', line 80 def definitions DEFINITIONS end |
.external_keys ⇒ Object
76 77 78 |
# File 'app/services/command_tower/messaging/channels.rb', line 76 def external_keys @external_keys ||= DEFINITIONS.select(&:external?).map(&:key).freeze end |
.fetch(key) ⇒ Object
60 61 62 |
# File 'app/services/command_tower/messaging/channels.rb', line 60 def fetch(key) INDEX[key.to_s] end |
.fetch!(key) ⇒ Object
64 65 66 67 68 69 70 |
# File 'app/services/command_tower/messaging/channels.rb', line 64 def fetch!(key) normalized = key.to_s definition = INDEX[normalized] raise UnknownChannelError, "unknown channel: #{normalized.inspect}" if definition.nil? definition end |
.keys ⇒ Object
72 73 74 |
# File 'app/services/command_tower/messaging/channels.rb', line 72 def keys @keys ||= DEFINITIONS.map(&:key).freeze end |
.known?(key) ⇒ Boolean
56 57 58 |
# File 'app/services/command_tower/messaging/channels.rb', line 56 def known?(key) INDEX.key?(key.to_s) end |