Class: CustomerioRails::Mail::Customerio

Inherits:
Object
  • Object
show all
Defined in:
lib/customerio-rails/mail.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(values) ⇒ Customerio

Returns a new instance of Customerio.



8
9
10
11
12
13
# File 'lib/customerio-rails/mail.rb', line 8

def initialize(values)
  self.settings = {
    region: ENV['CUSTOMERIO_REGION'] || ::Customerio::Regions::US,
    app_api_key: ENV['CUSTOMERIO_APP_API_KEY']
  }.merge(values)
end

Instance Attribute Details

#settingsObject

Returns the value of attribute settings.



6
7
8
# File 'lib/customerio-rails/mail.rb', line 6

def settings
  @settings
end

Instance Method Details

#api_clientObject



42
43
44
# File 'lib/customerio-rails/mail.rb', line 42

def api_client
  ::Customerio::APIClient.new(settings[:app_api_key], region: settings[:region])
end

#deliver!(mail) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/customerio-rails/mail.rb', line 15

def deliver!(mail)
  (Array.wrap(mail.to) + Array.wrap(mail.cc)).compact.each do |to|
    params = {
      to: to,
      from: Array.wrap(mail[:from]).first.unparsed_value,
      subject: mail.subject,
      reply_to: mail.reply_to,
      bcc: mail.bcc,
      headers: mail.headers,
      identifiers: { email: to } 
    }
    if mail[:transactional_message_id]
      params[:transactional_message_id] = mail[:transactional_message_id].unparsed_value
      params[:message_data] = mail[:message_data]&.unparsed_value || {}
    else
      params[:body] = mail.html_part.body.to_s if mail.html_part
      params[:body_plain] = mail.text_part.body.to_s if mail.text_part
      params[mail.text? ? :body_plain : :body] = mail.body.to_s if !mail.html_part && !mail.text_part
    end
    request = ::Customerio::SendEmailRequest.new(params.compact)
    mail.attachments.each do |attachment|
      request.attach(attachment.filename, attachment.read)
    end
    api_client.send_email(request)
  end
end