aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailbox/lib/action_mailbox/router.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailbox/lib/action_mailbox/router.rb')
-rw-r--r--actionmailbox/lib/action_mailbox/router.rb56
1 files changed, 29 insertions, 27 deletions
diff --git a/actionmailbox/lib/action_mailbox/router.rb b/actionmailbox/lib/action_mailbox/router.rb
index 0f041a8389..71370e409d 100644
--- a/actionmailbox/lib/action_mailbox/router.rb
+++ b/actionmailbox/lib/action_mailbox/router.rb
@@ -1,40 +1,42 @@
# frozen_string_literal: true
-# Encapsulates the routes that live on the ApplicationMailbox and performs the actual routing when
-# an inbound_email is received.
-class ActionMailbox::Router
- class RoutingError < StandardError; end
-
- def initialize
- @routes = []
- end
+module ActionMailbox
+ # Encapsulates the routes that live on the ApplicationMailbox and performs the actual routing when
+ # an inbound_email is received.
+ class Router
+ class RoutingError < StandardError; end
+
+ def initialize
+ @routes = []
+ end
- def add_routes(routes)
- routes.each do |(address, mailbox_name)|
- add_route address, to: mailbox_name
+ def add_routes(routes)
+ routes.each do |(address, mailbox_name)|
+ add_route address, to: mailbox_name
+ end
end
- end
- def add_route(address, to:)
- routes.append Route.new(address, to: to)
- end
+ def add_route(address, to:)
+ routes.append Route.new(address, to: to)
+ end
- def route(inbound_email)
- if mailbox = match_to_mailbox(inbound_email)
- mailbox.receive(inbound_email)
- else
- inbound_email.bounced!
+ def route(inbound_email)
+ if mailbox = match_to_mailbox(inbound_email)
+ mailbox.receive(inbound_email)
+ else
+ inbound_email.bounced!
- raise RoutingError
+ raise RoutingError
+ end
end
- end
- private
- attr_reader :routes
+ private
+ attr_reader :routes
- def match_to_mailbox(inbound_email)
- routes.detect { |route| route.match?(inbound_email) }.try(:mailbox_class)
- end
+ def match_to_mailbox(inbound_email)
+ routes.detect { |route| route.match?(inbound_email) }.try(:mailbox_class)
+ end
+ end
end
require "action_mailbox/router/route"