class Postmark::MailMessageConverter

Public Class Methods

new(message) click to toggle source
# File lib/postmark/mail_message_converter.rb, line 5
def initialize(message)
  @message = message
end

Public Instance Methods

run() click to toggle source
# File lib/postmark/mail_message_converter.rb, line 9
def run
  delete_blank_fields(pick_fields(convert, @message.templated?))
end

Private Instance Methods

cast_to_bool(val) click to toggle source
# File lib/postmark/mail_message_converter.rb, line 60
def cast_to_bool(val)
  if val.is_a?(TrueClass) || val.is_a?(FalseClass)
    val
  elsif val.is_a?(String) && val.downcase == "true"
    true
  else
    false
  end
end
content_part() click to toggle source
# File lib/postmark/mail_message_converter.rb, line 52
def content_part
  {
    'Attachments' => @message.export_attachments,
    'HtmlBody' => @message.body_html,
    'TextBody' => @message.body_text
  }
end
convert() click to toggle source
# File lib/postmark/mail_message_converter.rb, line 15
def convert
  headers_part.merge(content_part)
end
delete_blank_fields(message_hash) click to toggle source
# File lib/postmark/mail_message_converter.rb, line 19
def delete_blank_fields(message_hash)
  message_hash.delete_if { |k, v| v.nil? || (v.respond_to?(:empty?) && v.empty?) }
end
headers_part() click to toggle source
# File lib/postmark/mail_message_converter.rb, line 23
def headers_part
  {
    'From' => @message['from'].to_s,
    'To' => @message['to'].to_s,
    'ReplyTo' => @message['reply_to'].to_s,
    'Cc' => @message['cc'].to_s,
    'Bcc' => @message['bcc'].to_s,
    'Subject' => @message.subject,
    'Headers' => @message.export_headers,
    'Tag' => @message.tag.to_s,
    'TrackOpens' => (cast_to_bool(@message.track_opens) unless @message.track_opens.empty?),
    'TrackLinks' => (::Postmark::Inflector.to_postmark(@message.track_links) unless @message.track_links.empty?),
    'Metadata' => @message.metadata,
    'TemplateAlias' => @message.template_alias,
    'TemplateModel' => @message.template_model,
    'MessageStream' => @message.message_stream
  }
end
pick_fields(message_hash, templated = false) click to toggle source
# File lib/postmark/mail_message_converter.rb, line 42
def pick_fields(message_hash, templated = false)
  fields = if templated
             %w(Subject HtmlBody TextBody)
           else
             %w(TemplateAlias TemplateModel)
           end
  fields.each { |key| message_hash.delete(key) }
  message_hash
end