Class: MandrillMailer::ArgFormatter
- Inherits:
-
Object
- Object
- MandrillMailer::ArgFormatter
- Defined in:
- lib/mandrill_mailer/arg_formatter.rb
Constant Summary collapse
- ACCEPTED_MERGE_LANGUAGES =
['mailchimp', 'handlebars'].freeze
Class Method Summary collapse
- .attachment_args(args) ⇒ Object
-
.boolean(arg) ⇒ Object
ensure only true or false is returned given arg.
- .format_messages_api_message_data(args, defaults) ⇒ Object
- .images_args(args) ⇒ Object
-
.mandrill_args(args) ⇒ Object
convert a normal hash into the format mandrill needs.
- .merge_vars(args) ⇒ Object
-
.params(to_params) ⇒ Object
handle if to params is an array of either hashes or strings or the single string.
-
.params_item(item) ⇒ Object
single to params item.
- .rcpt_metadata(args) ⇒ Object
Class Method Details
.attachment_args(args) ⇒ Object
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 7 def self.(args) return unless args args.map do || .symbolize_keys! type = [:mimetype] || [:type] name = [:filename] || [:name] file = [:file] || [:content] {"type" => type, "name" => name, "content" => Base64.encode64(file)} end end |
.boolean(arg) ⇒ Object
ensure only true or false is returned given arg
48 49 50 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 48 def self.boolean(arg) !!arg end |
.format_messages_api_message_data(args, defaults) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 72 def self.(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" => (args[:attachments]), "images" => images_args(args[:images]) } end |
.images_args(args) ⇒ Object
18 19 20 21 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 18 def self.images_args(args) return unless args (args) end |
.mandrill_args(args) ⇒ Object
convert a normal hash into the format mandrill needs
24 25 26 27 28 29 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 24 def self.mandrill_args(args) return [] unless args args.map do |k,v| {'name' => k, 'content' => v} end end |
.merge_vars(args) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 31 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) ⇒ Object
handle if to params is an array of either hashes or strings or the single string
53 54 55 56 57 58 59 60 61 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 53 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) ⇒ Object
single to params item
64 65 66 67 68 69 70 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 64 def self.params_item(item) if item.kind_of? Hash item else {"email" => item, "name" => item} end end |
.rcpt_metadata(args) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/mandrill_mailer/arg_formatter.rb', line 39 def self.(args) return [] unless args args.map do |item| rcpt = item.keys[0] {'rcpt' => rcpt, 'values' => item.fetch(rcpt)} end end |