Class: Falcon::Middleware::Redirect
- Inherits:
 - 
      Protocol::HTTP::Middleware
      
        
- Object
 - Protocol::HTTP::Middleware
 - Falcon::Middleware::Redirect
 
 
- Defined in:
 - lib/falcon/middleware/redirect.rb
 
Overview
A HTTP middleware for redirecting a given set of hosts to a different endpoint. Typically used for implementing HTTP -> HTTPS redirects.
Instance Method Summary collapse
- 
  
    
      #call(request)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Redirect the request if the authority matches a specific host.
 - 
  
    
      #initialize(app, hosts, endpoint)  ⇒ Redirect 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Initialize the redirect middleware.
 - 
  
    
      #lookup(request)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Lookup the appropriate host for the given request.
 
Constructor Details
#initialize(app, hosts, endpoint) ⇒ Redirect
Initialize the redirect middleware.
      44 45 46 47 48 49  | 
    
      # File 'lib/falcon/middleware/redirect.rb', line 44 def initialize(app, hosts, endpoint) super(app) @hosts = hosts @endpoint = endpoint end  | 
  
Instance Method Details
#call(request) ⇒ Object
Redirect the request if the authority matches a specific host.
      62 63 64 65 66 67 68 69 70 71 72 73 74  | 
    
      # File 'lib/falcon/middleware/redirect.rb', line 62 def call(request) if host = lookup(request) if @endpoint.default_port? location = "#{@endpoint.scheme}://#{host.}#{request.path}" else location = "#{@endpoint.scheme}://#{host.}:#{@endpoint.port}#{request.path}" end return Protocol::HTTP::Response[301, [['location', location]], []] else super end end  | 
  
#lookup(request) ⇒ Object
Lookup the appropriate host for the given request.
      53 54 55 56 57 58  | 
    
      # File 'lib/falcon/middleware/redirect.rb', line 53 def lookup(request) # Trailing dot and port is ignored/normalized. if = request.&.sub(/(\.)?(:\d+)?$/, '') return @hosts[] end end  |