class Griddler::Cloudmailin::Adapter

Constants

KEY_LIST

Attributes

params[R]

Public Class Methods

new(params) click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 23
def initialize(params)
  @params = params
end
normalize_params(params) click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 4
def self.normalize_params(params)
  adapter = new(params)
  adapter.normalize_params
end

Public Instance Methods

legacy?() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 15
def legacy?
  @legacy ||= headers.key? :From
end
normalize_params() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 9
def normalize_params
  normalized_params = base_params
  normalized_params[:bcc] = bcc unless bcc.empty?
  normalized_params
end

Private Instance Methods

base_params() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 55
def base_params # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  @base_params ||= {
    to: tos,
    cc: ccs,
    from: headers[header_keys[:from]],
    date: headers[header_keys[:date]].try(:to_datetime),
    subject: headers[header_keys[:subject]],
    text: params[:plain],
    html: params[:html],
    attachments: params.fetch(:attachments) { {} }.values,
    headers: headers
  }
end
bcc() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 47
def bcc
  @bcc ||= header_emails.include?(envelope_to) ? [] : [envelope_to]
end
ccs() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 31
def ccs
  @ccs ||= recipients(header_keys[:cc])
end
envelope_to() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 39
def envelope_to
  @envelope_to ||= params[:envelope][:to]
end
header_emails() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 43
def header_emails
  @header_emails ||= (tos | ccs).map { |addressee| Griddler::EmailParser.parse_address(addressee)[:email] }
end
header_keys() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 69
def header_keys
  @header_keys ||= Hash[legacy? ? KEY_LIST.map { |s| [s, s.capitalize] } : KEY_LIST.map { |s| [s, s] }]
end
headers() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 51
def headers
  @headers ||= params[:headers]
end
recipients(field) click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 27
def recipients(field)
  headers[field].to_s.split(',').map(&:strip)
end
tos() click to toggle source
# File lib/griddler/cloudmailin/adapter.rb, line 35
def tos
  @tos ||= recipients(header_keys[:to])
end