Sha256: e43e4d47806f8bb4935e42aa4c20418223d49fd2013228bf2611760a67477e99

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

module MultiMail
  # Endpoint for initializing different incoming email receivers.
  #
  # @see http://rdoc.info/gems/fog/Fog/Storage
  module Receiver
    # Initializes an incoming email receiver.
    #
    # @example
    #   require 'multi_mail'
    #   service = MultiMail::Receiver.new({
    #     :provider => 'mailgun',
    #     :mailgun_api_key => 'key-xxxxxxxxxxxxxxxxxxxxxxx-x-xxxxxx',
    #   })
    #
    # @param [Hash] attributes required arguments
    # @option attributes [String,Symbol] :provider a provider
    # @return [MultiMail::Service] an incoming email receiver
    # @raise [ArgumentError] if the provider does not exist
    # @see Fog::Storage::new
    def self.new(attributes)
      attributes = attributes.dup # prevent delete from having side effects
      case provider = attributes.delete(:provider).to_s.downcase.to_sym
      when :cloudmailin
        require 'multi_mail/cloudmailin/receiver'
        MultiMail::Receiver::Cloudmailin.new(attributes)
      when :mailgun
        require 'multi_mail/mailgun/receiver'
        MultiMail::Receiver::Mailgun.new(attributes)
      when :mandrill
        require 'multi_mail/mandrill/receiver'
        MultiMail::Receiver::Mandrill.new(attributes)
      when :postmark
        require 'multi_mail/postmark/receiver'
        MultiMail::Receiver::Postmark.new(attributes)
      when :sendgrid
        require 'multi_mail/sendgrid/receiver'
        MultiMail::Receiver::SendGrid.new(attributes)
      when :simple
        require 'multi_mail/simple/receiver'
        MultiMail::Receiver::Simple.new(attributes)
      when :mock
        # for testing
        MultiMail::Receiver::Mock.new(attributes)
      else
        raise ArgumentError.new("#{provider} is not a recognized provider")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
multi_mail-0.0.2 lib/multi_mail/receiver.rb