class Mailkick::Service::Mailchimp

Public Class Methods

discoverable?() click to toggle source
# File lib/mailkick/service/mailchimp.rb, line 24
def self.discoverable?
  !!(defined?(::Gibbon) && ENV["MAILCHIMP_API_KEY"] && ENV["MAILCHIMP_LIST_ID"])
end
new(options = {}) click to toggle source
# File lib/mailkick/service/mailchimp.rb, line 6
def initialize(options = {})
  @gibbon = ::Gibbon::Request.new(api_key: options[:api_key] || ENV["MAILCHIMP_API_KEY"])
  @list_id = options[:list_id] || ENV["MAILCHIMP_LIST_ID"]
end

Public Instance Methods

opt_outs() click to toggle source

TODO paginate

# File lib/mailkick/service/mailchimp.rb, line 12
def opt_outs
  unsubscribes + spam_reports
end
spam_reports() click to toggle source
# File lib/mailkick/service/mailchimp.rb, line 20
def spam_reports
  fetch(@gibbon.lists(@list_id).abuse_reports.retrieve.body["abuse_reports"], "spam")
end
unsubscribes() click to toggle source
# File lib/mailkick/service/mailchimp.rb, line 16
def unsubscribes
  fetch(@gibbon.lists(@list_id).members.retrieve(params: {status: "unsubscribed"}).body["members"], "unsubscribe")
end

Protected Instance Methods

fetch(response, reason) click to toggle source
# File lib/mailkick/service/mailchimp.rb, line 30
def fetch(response, reason)
  response.map do |record|
    {
      email: record["email_address"],
      time: ActiveSupport::TimeZone["UTC"].parse(record["timestamp_opt"] || record["date"]),
      reason: reason
    }
  end
end