Method: Webhookdb::Message.dispatch

Defined in:
lib/webhookdb/message.rb

.dispatch(template, to, transport_type) ⇒ Object

Create a Webhookdb::Message::Delivery ready to deliver (rendered, all bodies set up) using the given transport_type to the given user.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/webhookdb/message.rb', line 39

def self.dispatch(template, to, transport_type)
  (transport = Webhookdb::Message::Transport.for(transport_type)) or
    raise InvalidTransportError, "Invalid transport #{transport_type}"
  recipient = transport.recipient(to)

  contents = self.render(template, transport_type, recipient)

  Webhookdb::Message::Delivery.db.transaction do
    delivery = Webhookdb::Message::Delivery.create(
      template: template.full_template_name,
      transport_type: transport.type,
      transport_service: transport.service,
      to: recipient.to,
      recipient: recipient.customer,
      extra_fields: template.extra_fields,
    )
    transport.add_bodies(delivery, contents)
    delivery.publish_deferred("dispatched", delivery.id)
    return delivery
  end
end