Class: NoWWW::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/no_w_w_w/middleware.rb

Constant Summary collapse

STARTS_WITH_WWW =
/^www\./i
IP_STRING =
/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/i

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



6
7
8
# File 'lib/no_w_w_w/middleware.rb', line 6

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/no_w_w_w/middleware.rb', line 10

def call(env)
  uri = URI.parse Rack::Request.new(env).url
  unless uri.host =~ STARTS_WITH_WWW || uri.host =~ IP_STRING
    uri.host = "www.#{uri.host}"
    puts "NoWWW: Redirected to #{uri.to_s}"
    [301, { 'Location' =>  uri.to_s}, ['Redirecting...']]
  else
    @app.call(env)
  end
end