Sha256: e9d1bda58ad6bf55c18ece5f6baf4bb8ed5600fd0852943ea544ff8cde72c580

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'chatterbox'
require 'chatterbox/mailer'

module Chatterbox
  class Email
    
    def self.deliver(options = {})
      new(options).deliver
    end
    
    attr_reader :options
    
    def initialize(options = {})
      @options = options
      validate_options
    end
    
    def deliver
      Mailer.deliver_message(options)
    end
    
    private
    
    def validate_options
      require_message
      require_message_keys(:summary)
      
      require_config
      require_config_keys(:to, :from)
    end
    
    def require_message
      raise(ArgumentError, "Must configure with a :message") unless options.key?(:message)
    end
    
    def require_config
      raise(ArgumentError, "Must configure with a :config") unless options.key?(:config)
    end
    
    def require_config_keys(*keys)
      Array(keys).each do |key|
        raise(ArgumentError, "Must provide #{key.inspect} in the :config") unless options[:config].key?(key)
      end
    end
    
    def require_message_keys(*keys)
      Array(keys).each do |key|
        raise(ArgumentError, "Must provide #{key.inspect} in the :message") unless options[:message].key?(key)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chatterbox-email-0.2.0 lib/chatterbox/email.rb