# 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" } def initialize(options = {}) require "mandrill" @mandrill = ::Mandrill::API.new(options[:api_key] || ENV["MANDRILL_APIKEY"]) 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 def self.discoverable? !!(defined?(::Mandrill::API) && ENV["MANDRILL_APIKEY"]) end end end end