2018-09-18 19:26:30 -04:00
|
|
|
require "active_support/rescuable"
|
2018-09-18 19:42:38 -04:00
|
|
|
require "action_mailroom/mailbox/callbacks"
|
2018-09-18 19:26:30 -04:00
|
|
|
|
2018-09-17 20:01:52 -04:00
|
|
|
class ActionMailroom::Mailbox
|
2018-09-18 19:42:38 -04:00
|
|
|
include ActiveSupport::Rescuable, Callbacks
|
2018-09-18 19:26:30 -04:00
|
|
|
|
2018-09-17 20:49:47 -04:00
|
|
|
class << self
|
|
|
|
def receive(inbound_email)
|
2018-09-18 19:31:16 -04:00
|
|
|
new(inbound_email).perform_processing
|
2018-09-17 20:49:47 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def routing(routes)
|
|
|
|
@router = ActionMailroom::Router.new(routes)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
attr_reader :inbound_email
|
|
|
|
delegate :mail, to: :inbound_email
|
|
|
|
|
|
|
|
def initialize(inbound_email)
|
|
|
|
@inbound_email = inbound_email
|
|
|
|
end
|
|
|
|
|
2018-09-18 19:31:16 -04:00
|
|
|
def perform_processing
|
2018-09-18 19:26:30 -04:00
|
|
|
inbound_email.processing!
|
2018-09-18 19:42:38 -04:00
|
|
|
|
|
|
|
run_callbacks :process do
|
|
|
|
process
|
|
|
|
end
|
|
|
|
|
2018-09-18 19:26:30 -04:00
|
|
|
inbound_email.delivered!
|
|
|
|
rescue => exception
|
|
|
|
inbound_email.failed!
|
|
|
|
rescue_with_handler(exception) || raise
|
|
|
|
end
|
|
|
|
|
2018-09-17 20:49:47 -04:00
|
|
|
def process
|
2018-09-18 19:26:30 -04:00
|
|
|
# Overwrite in subclasses
|
2018-09-17 20:49:47 -04:00
|
|
|
end
|
2018-09-17 20:01:52 -04:00
|
|
|
end
|