Module: BananaPeels

Defined in:
lib/banana_peels/api.rb,
lib/banana_peels/version.rb

Defined Under Namespace

Modules: MailerHelper Classes: API, Campaign

Constant Summary collapse

VERSION =
'0.0.8'

Class Method Summary collapse

Class Method Details

.api(api_key) ⇒ Object



5
6
7
# File 'lib/banana_peels/api.rb', line 5

def api(api_key)
  API.new(api_key)
end

.campaign(campaign_id, merge_tags, api_key) ⇒ Object



25
26
27
# File 'lib/banana_peels/api.rb', line 25

def campaign(campaign_id, merge_tags, api_key)
  Campaign.new(campaign_id, merge_tags, api_key)
end

.campaigns(api_key) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/banana_peels/api.rb', line 9

def campaigns(api_key)
  meta_list = campaigns_list(api_key)
  campaigns = []
  meta_list.each do |c_meta|
    c = campaign(c_meta['id'], nil, api_key)
    c.mailchimp_meta = c_meta
    campaigns.push(c)
  end
  campaigns
end

.campaigns_list(api_key) ⇒ Object



20
21
22
23
# File 'lib/banana_peels/api.rb', line 20

def campaigns_list(api_key)
  api_data = api(api_key).campaigns.list([], 0, 1000) # TODO: presumes <= 1000 campaigns
  api_data['data']
end

.email_with_name(name, email) ⇒ Object

Utility method.



48
49
50
51
# File 'lib/banana_peels/api.rb', line 48

def email_with_name(name, email)
  name = name.gsub(/([\\"])/, '\\'=>'\\\\', '"'=>'\\"')
  "\"#{name}\" <#{email}>"
end

.mail(mailer, campaign_id, mail_options, merge_tags, api_key) ⇒ Object

Use this instead of #mail() in ActionMailer. Also allows :from_name, :from_email to be specified independently as mail_options as opposed to just :from.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/banana_peels/api.rb', line 32

def mail(mailer, campaign_id, mail_options, merge_tags, api_key)
  c = campaign(campaign_id, merge_tags, api_key)
  headers = c.default_mail_options.merge(mail_options)
  # Adjust from address.
  if !mail_options[:from] && (mail_options[:from_name] || mail_options[:from_email])
    headers[:from] = email_with_name(mail_options[:from_name] || c.from_name, mail_options[:from_email] || c.from_email)
  end
  mailer.mail(headers) do |format|
    format.text { mailer.render text: c.text_content }
    format.html(content_transfer_encoding: 'quoted-printable') do
      mailer.render text: [c.html_content].pack('M')
    end
  end
end