class Workarea::MailChimp::Gateway::Members
Public Class Methods
new(default_list_id)
click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 4 def initialize(default_list_id) @default_list_id = default_list_id end
Public Instance Methods
details(email)
click to toggle source
Returns Hash or nil
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 10 def details(email) response ||= begin MailChimp.request.lists(@default_list_id).members(digest_email(email)).retrieve rescue ::Gibbon::MailChimpError => e response_error_handler(e) end extract_member_details(response) end
subscribe(subscribe_argument)
click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 28 def subscribe(subscribe_argument) return unless subscribe_argument[:email_address] begin MailChimp.request.lists(@default_list_id).members(digest_email(subscribe_argument[:email_address])).upsert(body: subscribe_argument.merge("status" => "subscribed")) rescue ::Gibbon::MailChimpError => e response_error_handler(e) end end
unsubscribe(email, options = {})
click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 20 def unsubscribe(email, options = {}) begin MailChimp.request.lists(@default_list_id).members(digest_email(email)).update(body: { status: "unsubscribed" }) rescue ::Gibbon::MailChimpError => e response_error_handler(e) end end
Private Instance Methods
digest_email(email)
click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 54 def digest_email(email) md5 = Digest::MD5.new md5.update(email.downcase) md5.hexdigest end
extract_member_details(details)
click to toggle source
Returns
-
Hash of details for subscribed emails
-
nil if email does not exist
-
nil if email is unsubscribed
# File lib/integrations/workarea/mail_chimp/gateway/members.rb, line 44 def extract_member_details(details) if details["error"].present? nil elsif details["status"] == "unsubscribed" nil else details end end