module DMCourier::Services::MessageHelper

Public Instance Methods

attachments(filter = {}) click to toggle source
# File lib/dm_courier/message_helper.rb, line 71
def attachments(filter = {})
  Enumerator.new do |y|
    attachments = mail.attachments
    attachments = if filter[:inline]
                    attachments.select(&:inline?)
                  else
                    attachments.reject(&:inline?)
                  end if filter.key?(:inline)

    attachments.map do |attachment|
      y.yield(name: attachment.inline? ? attachment.cid : attachment.filename,
              type: attachment.mime_type,
              content: Base64.encode64(attachment.body.decoded),
              inline: attachment.inline?)
    end
  end
end
attachments?(filter = {}) click to toggle source
# File lib/dm_courier/message_helper.rb, line 89
def attachments?(filter = {})
  found = mail.attachments && !mail.attachments.empty?

  if found && filter.key?(:inline)
    found &&= mail.attachments.any? { |a| a.inline? == filter[:inline] }
  end

  found
end
extract_params(params) click to toggle source
# File lib/dm_courier/message_helper.rb, line 7
def extract_params(params)
  json = {}

  json
    .merge!(Hash[
      params[:nil_true_false].map { |name, key| [name.to_sym, nil_true_false?(key.to_sym)] }
    ]) if params.key?(:nil_true_false)

  json
    .merge!(Hash[
      params[:string].map { |name, key| [name.to_sym, return_string_value(key.to_sym)] }
    ]) if params.key?(:string)

  json
end
fallback_options(field) click to toggle source
# File lib/dm_courier/message_helper.rb, line 67
def fallback_options(field)
  mail[field] || options[field]
end
from() click to toggle source
# File lib/dm_courier/message_helper.rb, line 35
def from
  Mail::Address.new(from_address)
end
from_address() click to toggle source
# File lib/dm_courier/message_helper.rb, line 39
def from_address
  mail[:from] ? mail[:from].formatted.first : options[:from]
end
from_email() click to toggle source
# File lib/dm_courier/message_helper.rb, line 23
def from_email
  from.address if from_address
end
from_name() click to toggle source
# File lib/dm_courier/message_helper.rb, line 31
def from_name
  from.display_name if from_address
end
html_part() click to toggle source
# File lib/dm_courier/message_helper.rb, line 48
def html_part
  mail.html_part ? mail.html_part.body.decoded : mail.body.decoded
end
metadata() click to toggle source
# File lib/dm_courier/message_helper.rb, line 27
def metadata
  JSON.parse(mail[:metadata].value) if mail[:metadata]
end
nil_true_false?(field) click to toggle source
# File lib/dm_courier/message_helper.rb, line 61
def nil_true_false?(field)
  value = fallback_options(field)
  return nil if value.nil?
  value.to_s == "true" ? true : false
end
return_string_value(field) click to toggle source
# File lib/dm_courier/message_helper.rb, line 56
def return_string_value(field)
  value = fallback_options(field)
  value ? value.to_s : nil
end
subject() click to toggle source
# File lib/dm_courier/message_helper.rb, line 52
def subject
  mail.subject
end
text_part() click to toggle source
# File lib/dm_courier/message_helper.rb, line 43
def text_part
  return mail.text_part.body.decoded if mail.multipart? && mail.text_part
  nil
end