class ElasticEmail::Deliverer
Attributes
settings[RW]
Public Class Methods
new(settings)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 6 def initialize(settings) self.settings = settings end
Public Instance Methods
api_key()
click to toggle source
# File lib/elastic_email/deliverer.rb, line 14 def api_key self.settings[:api_key] end
deliver!(rails_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 18 def deliver!(rails_message) response = elastic_email_client.send_message build_elastic_email_message_for(rails_message) response_body = response.body if response.code == '200' and response_body.match('^[0-9|a-f]{8}-[0-9|a-f]{4}-[0-9|a-f]{4}-[0-9|a-f]{4}-[0-9|a-f]{12}$').present? rails_message.message_id = response_body else raise Error.new(response_body) end response end
username()
click to toggle source
# File lib/elastic_email/deliverer.rb, line 10 def username self.settings[:username] end
Private Instance Methods
build_basic_elastic_email_message_for(rails_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 38 def build_basic_elastic_email_message_for(rails_message) elastic_email_message = { username: username, api_key: api_key, from: rails_message[:from].formatted, to: rails_message[:to].formatted, subject: rails_message.subject, body_text: extract_text(rails_message), body_html: extract_html(rails_message) } elastic_email_message[:reply_to] = rails_message[:reply_to].formatted if rails_message[:reply_to].present? return elastic_email_message end
build_elastic_email_message_for(rails_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 31 def build_elastic_email_message_for(rails_message) elastic_email_message = build_basic_elastic_email_message_for rails_message remove_empty_values elastic_email_message elastic_email_message end
elastic_email_client()
click to toggle source
# File lib/elastic_email/deliverer.rb, line 74 def elastic_email_client @elastic_email_client ||= Client.new end
extract_html(rails_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 54 def extract_html(rails_message) if rails_message.html_part rails_message.html_part.body.decoded else rails_message.content_type =~ /text\/html/ ? rails_message.body.decoded : nil end end
extract_text(rails_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 62 def extract_text(rails_message) if rails_message.multipart? rails_message.text_part ? rails_message.text_part.body.decoded : nil else rails_message.content_type =~ /text\/plain/ ? rails_message.body.decoded : nil end end
remove_empty_values(elastic_email_message)
click to toggle source
# File lib/elastic_email/deliverer.rb, line 70 def remove_empty_values(elastic_email_message) elastic_email_message.delete_if { |key, value| value.nil? } end