Class: CircuitRails::DeliveryMethod

Inherits:
Object
  • Object
show all
Defined in:
lib/circuit_rails/delivery_method.rb

Defined Under Namespace

Classes: MissingParameter

Constant Summary collapse

DEFAULTS =
{
  host: 'eu.yourcircuit.com',
  client_id: nil,
  client_secret: nil,
  auth_scope: 'ALL',
  default_conversation: nil
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(values) ⇒ DeliveryMethod



17
18
19
# File 'lib/circuit_rails/delivery_method.rb', line 17

def initialize(values)
  self.settings = DEFAULTS.merge(values)
end

Instance Attribute Details

#settingsObject

Returns the value of attribute settings.



7
8
9
# File 'lib/circuit_rails/delivery_method.rb', line 7

def settings
  @settings
end

Instance Method Details

#clientObject



21
22
23
24
25
26
27
28
# File 'lib/circuit_rails/delivery_method.rb', line 21

def client
  @client ||= CircuitClient::Client.new do |c|
    c.host = settings[:host]
    c.client_id = settings[:client_id]
    c.client_secret = settings[:client_secret]
    c.auth_scope = settings[:auth_scope]
  end
end

#deliver!(mail) ⇒ Object

Raises:



30
31
32
33
34
35
36
37
# File 'lib/circuit_rails/delivery_method.rb', line 30

def deliver!(mail)
  conv = mail.conversation || settings[:default_conversation]
  raise MissingParameter, 'a conversation or default_conversation is required for circuit delivery!' if conv.nil?
  body = mail.multipart? ? mail.text_part.body.decoded : mail.body.decoded
  options = {}
  options[:subject] = mail.subject unless mail.subject.nil?
  client.create_message(conv, body, **options)
end