# https://mandrillapp.com/api/docs/index.ruby.html
module Mailkick
class Service
class Mandrill < Mailkick::Service
REASONS_MAP = {
"hard-bounce" => "bounce",
"soft-bounce" => "bounce",
"spam" => "spam",
"unsub" => "unsubscribe"
}
# TODO remove ENV["MANDRILL_APIKEY"]
def initialize(options = {})
require "mandrill"
@mandrill = ::Mandrill::API.new(
options[:api_key] || ENV["MANDRILL_APIKEY"] || ENV["MANDRILL_API_KEY"]
)
end
# TODO paginate
def opt_outs
@mandrill.rejects.list.map do |record|
{
email: record["email"],
time: ActiveSupport::TimeZone["UTC"].parse(record["created_at"]),
reason: REASONS_MAP[record["reason"]]
}
end
end
# TODO remove ENV["MANDRILL_APIKEY"]
def self.discoverable?
!!(defined?(::Mandrill::API) && (ENV["MANDRILL_APIKEY"] || ENV["MANDRILL_API_KEY"]))
end
end
end
end