class MandrillMailer::ArgFormatter

Constants

ACCEPTED_MERGE_LANGUAGES

Public Class Methods

attachment_args(args) click to toggle source
# File lib/mandrill_mailer/arg_formatter.rb, line 7
def self.attachment_args(args)
  return unless args
  args.map do |attachment|
    attachment.symbolize_keys!
    type = attachment[:mimetype] || attachment[:type]
    name = attachment[:filename] || attachment[:name]
    file = attachment[:file] || attachment[:content]
    encoded_file = attachment[:encoded_file] || attachment[:encoded_content]
    next {"type" => type, "name" => name, "content" => encoded_file} if encoded_file
    next {"type" => type, "name" => name, "content" => Base64.encode64(file)}
  end
end
boolean(arg) click to toggle source

ensure only true or false is returned given arg

# File lib/mandrill_mailer/arg_formatter.rb, line 50
def self.boolean(arg)
  !!arg
end
format_messages_api_message_data(args, defaults) click to toggle source
# File lib/mandrill_mailer/arg_formatter.rb, line 74
def self.format_messages_api_message_data(args, defaults)
  # If a merge_language attribute is given and it's not one of the accepted
  # languages Raise an error
  if args[:merge_language] && !ACCEPTED_MERGE_LANGUAGES.include?(args[:merge_language])
    raise MandrillMailer::CoreMailer::InvalidMergeLanguageError.new("The :merge_language value `#{args[:merge_language]}`is invalid, value must be one of: #{ACCEPTED_MERGE_LANGUAGES.join(', ')}.")
  end

  {
    "html" => args[:html],
    "text" => args[:text],
    "subject" => args[:subject],
    "from_email" => args[:from] || defaults[:from],
    "from_name" => args[:from_name] || defaults[:from_name] || defaults[:from],
    "to" => params(args[:to]),
    "headers" => args[:headers],
    "important" => boolean(args[:important]),
    "track_opens" => args.fetch(:track_opens, true),
    "track_clicks" => boolean(args.fetch(:track_clicks, true)),
    "auto_text" => boolean(args.fetch(:auto_text, true)),
    "auto_html" => boolean(args[:auto_html]),
    "inline_css" => boolean(args[:inline_css]),
    "url_strip_qs" => boolean(args.fetch(:url_strip_qs, true)),
    "preserve_recipients" => boolean(args[:preserve_recipients]),
    "view_content_link" => boolean(args[:view_content_link] || defaults[:view_content_link]),
    "bcc_address" => args[:bcc],
    "tracking_domain" => args[:tracking_domain],
    "signing_domain" => args[:signing_domain],
    "return_path_domain" => args[:return_path_domain],
    "merge" => boolean(args[:merge]),
    "merge_language" => args[:merge_language],
    "global_merge_vars" => mandrill_args(args[:vars] || args[:global_merge_vars] || defaults[:merge_vars]),
    "merge_vars" => merge_vars(args[:recipient_vars] || args[:merge_vars]),
    "tags" => args[:tags],
    "subaccount" => args[:subaccount],
    "google_analytics_domains" => args[:google_analytics_domains],
    "google_analytics_campaign" => args[:google_analytics_campaign],
    "metadata" => args[:metadata],
    "recipient_metadata" => args[:recipient_metadata],
    "attachments" => attachment_args(args[:attachments]),
    "images" => images_args(args[:images])
  }
end
images_args(args) click to toggle source
# File lib/mandrill_mailer/arg_formatter.rb, line 20
def self.images_args(args)
  return unless args
  attachment_args(args)
end
mandrill_args(args) click to toggle source

convert a normal hash into the format mandrill needs

# File lib/mandrill_mailer/arg_formatter.rb, line 26
def self.mandrill_args(args)
  return [] unless args
  args.stringify_keys.map do |k,v|
    {'name' => k, 'content' => v}
  end
end
merge_vars(args) click to toggle source
# File lib/mandrill_mailer/arg_formatter.rb, line 33
def self.merge_vars(args)
  return [] unless args
  args.map do |item|
    rcpt = item.keys[0]
    {'rcpt' => rcpt, 'vars' => mandrill_args(item.fetch(rcpt))}
  end
end
params(to_params) click to toggle source

handle if to params is an array of either hashes or strings or the single string

# File lib/mandrill_mailer/arg_formatter.rb, line 55
def self.params(to_params)
  if to_params.kind_of? Array
    to_params.map do |p|
      params_item(p)
    end
  else
    [params_item(to_params)]
  end
end
params_item(item) click to toggle source

single to params item

# File lib/mandrill_mailer/arg_formatter.rb, line 66
def self.params_item(item)
  if item.kind_of? Hash
    item
  else
    {"email" => item, "name" => item}
  end
end
rcpt_metadata(args) click to toggle source
# File lib/mandrill_mailer/arg_formatter.rb, line 41
def self.rcpt_metadata(args)
  return [] unless args
  args.map do |item|
    rcpt = item.keys[0]
    {'rcpt' => rcpt, 'values' => item.fetch(rcpt)}
  end
end