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