class MailHandler::Handler

main handler class for creating sender, receiver handlers

Constants

CHECKER_TYPES
NOTIFICATION_TYPES
SENDER_TYPES

Attributes

receiver[RW]
sender[RW]

Public Instance Methods

handler(sender, receiver) click to toggle source
# File lib/mailhandler.rb, line 116
def handler(sender, receiver)
  handler = new
  handler.sender = sender
  handler.receiver = receiver
  handler
end
init_receiver(type = :folder, settings = {}) click to toggle source
# File lib/mailhandler.rb, line 102
def init_receiver(type = :folder, settings = {})
  verify_type(type, CHECKER_TYPES)
  receiver = MailHandler::Receiver.new(CHECKER_TYPES[type].new)

  settings.each do |setting_name, setting_value|
    if receiver.checker.respond_to?(setting_name)
      receiver.checker.instance_variable_set("@#{setting_name}", setting_value)
    end
  end

  add_receiving_notifications(receiver, settings[:notifications])
  @receiver = receiver
end
init_sender(type = :postmark_api, settings = {}) click to toggle source
# File lib/mailhandler.rb, line 89
def init_sender(type = :postmark_api, settings = {})
  verify_type(type, SENDER_TYPES)
  @sender = MailHandler::Sender.new(SENDER_TYPES[type].new)

  settings.each do |setting_name, setting_value|
    if @sender.dispatcher.respond_to?(setting_name)
      @sender.dispatcher.instance_variable_set("@#{setting_name}", setting_value)
    end
  end

  @sender
end

Private Instance Methods

add_receiving_notifications(receiver, notifications) click to toggle source

Add notifications, in case email receiving is delayed. When email is delayed, email notification can be sent or console status update.

@param [Receiving::Object] receiver @param [Array<Receiving::Notification::Class>] notifications

# File lib/mailhandler.rb, line 130
def add_receiving_notifications(receiver, notifications)
  return if notifications.nil?
  return unless (notifications - NOTIFICATION_TYPES.keys).empty?

  notifications.each { |n| receiver.add_observer(NOTIFICATION_TYPES[n].new) }
end
verify_type(type, types) click to toggle source
# File lib/mailhandler.rb, line 137
def verify_type(type, types)
  raise MailHandler::TypeError, "Unknown type - #{type}, possible options: #{types.keys}." unless types.key?(type)
end