class Workarea::MailChimp::Gateway

Attributes

default_list_id[R]
email_interests_id[R]

Public Class Methods

acceptable_failure_codes() click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 11
def self.acceptable_failure_codes
  [
    232, # Email_NotExists
    220, # List_InvalidImport (banned user / invalid email)
    400, # Member exists and cannot be subscribed
    404, # User not found
    500  # Inexplicable intermittent MailChimp-side error
  ]
end

Public Instance Methods

list() click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 51
def list
  @list ||=
    MailChimp::Gateway::List.new(
      default_list_id,
      email_interests_id
    )
end
members() click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 47
def members
  @members ||= MailChimp::Gateway::Members.new(default_list_id)
end
subscribe(email, options = {}) click to toggle source

Use this for new or current subscriptions

email: String new_email: String user: User

# File lib/integrations/workarea/mail_chimp/gateway.rb, line 27
def subscribe(email, options = {})
  members.subscribe(
    SubscribeArgumentBuilder.new(
      email,
      options,
      default_list_id,
      email_interests_id
    ).build
  )
end
unsubscribe(email, options = {}) click to toggle source

Unsubscribe email from default list. This does not delete the record in MailChimp.

email: String

# File lib/integrations/workarea/mail_chimp/gateway.rb, line 43
def unsubscribe(email, options = {})
  members.unsubscribe(email)
end

Private Instance Methods

acceptable_failure?(error) click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 61
def acceptable_failure?(error)
  self.class.acceptable_failure_codes.include?(error.body["status"])
end
error_hash(error) click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 73
def error_hash(error)
  { "error" => error.message }
end
response_error_handler(error) click to toggle source
# File lib/integrations/workarea/mail_chimp/gateway.rb, line 65
def response_error_handler(error)
  if !acceptable_failure?(error)
    raise MailChimpSubscriptionError, error.message
  end

  error_hash(error)
end