Class: ActionMailbox::Router
  
  
  
  
  
    - Inherits:
 
    - 
      Object
      
        
          - Object
 
          
            - ActionMailbox::Router
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - lib/action_mailbox/router.rb
 
  
  
 
Overview
  
    
Encapsulates the routes that live on the ApplicationMailbox and performs the actual routing when an inbound_email is received.
   
 
  
Defined Under Namespace
  
    
  
    
      Classes: Route, RoutingError
    
  
  
    
      Instance Method Summary
      collapse
    
    
  
  Constructor Details
  
    
  
  
    #initialize  ⇒ Router 
  
  
  
  
    
Returns a new instance of Router.
   
 
  
  
    
      
9
10
11 
     | 
    
      # File 'lib/action_mailbox/router.rb', line 9
def initialize
  @routes = []
end 
     | 
  
 
  
 
  
    Instance Method Details
    
      
  
  
    #add_route(address, to:)  ⇒ Object 
  
  
  
  
    
      
19
20
21 
     | 
    
      # File 'lib/action_mailbox/router.rb', line 19
def add_route(address, to:)
  routes.append Route.new(address, to: to)
end 
     | 
  
 
    
      
  
  
    #add_routes(routes)  ⇒ Object 
  
  
  
  
    
      
13
14
15
16
17 
     | 
    
      # File 'lib/action_mailbox/router.rb', line 13
def add_routes(routes)
  routes.each do |(address, mailbox_name)|
    add_route address, to: mailbox_name
  end
end
     | 
  
 
    
      
  
  
    #mailbox_for(inbound_email)  ⇒ Object 
  
  
  
  
    
      
33
34
35 
     | 
    
      # File 'lib/action_mailbox/router.rb', line 33
def mailbox_for(inbound_email)
  routes.detect { |route| route.match?(inbound_email) }&.mailbox_class
end
     | 
  
 
    
      
  
  
    #route(inbound_email)  ⇒ Object 
  
  
  
  
    
      
23
24
25
26
27
28
29
30
31 
     | 
    
      # File 'lib/action_mailbox/router.rb', line 23
def route(inbound_email)
  if mailbox = mailbox_for(inbound_email)
    mailbox.receive(inbound_email)
  else
    inbound_email.bounced!
    raise RoutingError
  end
end
     |