Class: Webhookdb::Message::Transport

Inherits:
Object
  • Object
show all
Extended by:
Webhookdb::MethodUtilities
Defined in:
lib/webhookdb/message/transport.rb

Direct Known Subclasses

EmailTransport, FakeTransport

Defined Under Namespace

Classes: Error, UndeliverableRecipient

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Webhookdb::MethodUtilities

attr_predicate, attr_predicate_accessor, singleton_attr_accessor, singleton_attr_reader, singleton_attr_writer, singleton_method_alias, singleton_predicate_accessor, singleton_predicate_reader

Class Method Details

.for(type) ⇒ Object



20
21
22
23
# File 'lib/webhookdb/message/transport.rb', line 20

def self.for(type)
  type = Webhookdb::Message::Transport.override || type
  return Webhookdb::Message::Transport.transports[type.to_sym]
end

.for!(type) ⇒ Object



25
26
27
28
# File 'lib/webhookdb/message/transport.rb', line 25

def self.for!(type)
  (t = self.for(type)) or raise Webhookdb::Message::InvalidTransportError, "invalid transport: %p" % type
  return t
end

.register_transport(type) ⇒ Object



16
17
18
# File 'lib/webhookdb/message/transport.rb', line 16

def self.register_transport(type)
  Webhookdb::Message::Transport.transports[type] = self.new
end

Instance Method Details

#recipient(to) ⇒ Object

Override this if a transport needs a different ‘to’ than the email, like for text messages.



32
33
34
35
36
37
38
# File 'lib/webhookdb/message/transport.rb', line 32

def recipient(to)
  if to.is_a?(Webhookdb::Customer)
    (email = to.email) or raise "Customer #{to.id} has no default email"
    return Webhookdb::Message::Recipient.new(email, to)
  end
  return Webhookdb::Message::Recipient.new(to, nil)
end

#send!(_delivery) ⇒ Object



40
41
42
# File 'lib/webhookdb/message/transport.rb', line 40

def send!(_delivery)
  raise "Must implement in subclass. Call 3rd party with message/content and return transport ID."
end