Class: Effective::MailchimpApi
- Inherits:
-
Object
- Object
- Effective::MailchimpApi
- Defined in:
- app/models/effective/mailchimp_api.rb
Instance Attribute Summary collapse
-
#api_key ⇒ Object
Returns the value of attribute api_key.
-
#client ⇒ Object
Returns the value of attribute client.
-
#server ⇒ Object
Returns the value of attribute server.
Instance Method Summary collapse
- #admin_url ⇒ Object
-
#initialize(api_key:, server:) ⇒ MailchimpApi
constructor
A new instance of MailchimpApi.
- #list(id) ⇒ Object
- #list_member(id, email) ⇒ Object
- #list_member_add(member) ⇒ Object
- #list_member_update(member) ⇒ Object
-
#lists ⇒ Object
Returns an Array of Lists, which are each Hash Like this [{ …}, { … }].
- #ping ⇒ Object
Constructor Details
#initialize(api_key:, server:) ⇒ MailchimpApi
Returns a new instance of MailchimpApi.
13 14 15 16 17 18 19 20 21 22 |
# File 'app/models/effective/mailchimp_api.rb', line 13 def initialize(api_key:, server:) raise('expected an api key') unless api_key.present? raise('expected a server') unless server.present? @api_key = api_key @server = server @client = ::MailchimpMarketing::Client.new() @client.set_config(api_key: api_key, server: server) end |
Instance Attribute Details
#api_key ⇒ Object
Returns the value of attribute api_key.
9 10 11 |
# File 'app/models/effective/mailchimp_api.rb', line 9 def api_key @api_key end |
#client ⇒ Object
Returns the value of attribute client.
11 12 13 |
# File 'app/models/effective/mailchimp_api.rb', line 11 def client @client end |
#server ⇒ Object
Returns the value of attribute server.
10 11 12 |
# File 'app/models/effective/mailchimp_api.rb', line 10 def server @server end |
Instance Method Details
#admin_url ⇒ Object
24 25 26 |
# File 'app/models/effective/mailchimp_api.rb', line 24 def admin_url "https://#{server}.admin.mailchimp.com" end |
#list(id) ⇒ Object
39 40 41 |
# File 'app/models/effective/mailchimp_api.rb', line 39 def list(id) client.lists.get_list(id.try(:mailchimp_id) || id) end |
#list_member(id, email) ⇒ Object
43 44 45 46 47 48 49 50 51 |
# File 'app/models/effective/mailchimp_api.rb', line 43 def list_member(id, email) raise('expected an email') unless email.to_s.include?('@') begin client.lists.get_list_member(id.try(:mailchimp_id) || id, email) rescue MailchimpMarketing::ApiError => e {} end end |
#list_member_add(member) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/effective/mailchimp_api.rb', line 53 def list_member_add(member) raise('expected an Effective::MailchimpListMember') unless member.kind_of?(Effective::MailchimpListMember) payload = { email_address: member.user.email, status: (member.subscribed ? 'subscribed' : 'unsubscribed'), merge_fields: { 'FNAME': member.user.try(:first_name), 'LNAME': member.user.try(:last_name) } } client.lists.add_list_member(member.mailchimp_list.mailchimp_id, payload) end |
#list_member_update(member) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/models/effective/mailchimp_api.rb', line 68 def list_member_update(member) raise('expected an Effective::MailchimpListMember') unless member.kind_of?(Effective::MailchimpListMember) payload = { email_address: member.user.email, status: (member.subscribed ? 'subscribed' : 'unsubscribed'), merge_fields: { 'FNAME': member.user.try(:first_name), 'LNAME': member.user.try(:last_name) } } client.lists.update_list_member(member.mailchimp_list.mailchimp_id, member.email, payload) end |
#lists ⇒ Object
Returns an Array of Lists, which are each Hash Like this [{ …}, { … }]
34 35 36 37 |
# File 'app/models/effective/mailchimp_api.rb', line 34 def lists response = client.lists.get_all_lists() Array(response['lists']) - [nil, '', {}] end |
#ping ⇒ Object
28 29 30 |
# File 'app/models/effective/mailchimp_api.rb', line 28 def ping client.ping.get() end |