Class: Mailkick::Service::Mailchimp

Inherits:
Mailkick::Service show all
Defined in:
lib/mailkick/service/mailchimp.rb

Constant Summary

Constants inherited from Mailkick::Service

Sendgrid

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Mailkick::Service

#fetch_opt_outs

Constructor Details

#initialize(options = {}) ⇒ Mailchimp

Returns a new instance of Mailchimp.



6
7
8
9
# 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

Class Method Details

.discoverable?Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/mailkick/service/mailchimp.rb', line 24

def self.discoverable?
  !!(defined?(::Gibbon) && ENV["MAILCHIMP_API_KEY"] && ENV["MAILCHIMP_LIST_ID"])
end

Instance Method Details

#opt_outsObject

TODO paginate



12
13
14
# File 'lib/mailkick/service/mailchimp.rb', line 12

def opt_outs
  unsubscribes + spam_reports
end

#spam_reportsObject



20
21
22
# File 'lib/mailkick/service/mailchimp.rb', line 20

def spam_reports
  fetch(@gibbon.lists(@list_id).abuse_reports.retrieve.body["abuse_reports"], "spam")
end

#unsubscribesObject



16
17
18
# File 'lib/mailkick/service/mailchimp.rb', line 16

def unsubscribes
  fetch(@gibbon.lists(@list_id).members.retrieve(params: {status: "unsubscribed"}).body["members"], "unsubscribe")
end