rack-www 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG.rdoc +10 -0
  2. data/README.rdoc +20 -5
  3. data/lib/rack/www.rb +19 -13
  4. metadata +6 -6
data/CHANGELOG.rdoc CHANGED
@@ -1,10 +1,20 @@
1
+ == 1.3
2
+
3
+ * Added possibility to redirects to any given :subdomain [Ryan Weald (https://github.com/rweald)].
4
+ * Added more tests
5
+
1
6
  == 1.2
7
+
2
8
  * Redirects to the right url without calling the app
3
9
  * Keep the path when redirecting
4
10
  * Keep the query string when redirecting
5
11
  * Added more tests
12
+
6
13
  == 1.1
14
+
7
15
  * Added possibility to redirects with www or without www.
8
16
  * Added possibility to set a param :message to show while redirecting.
17
+
9
18
  == 1.0
19
+
10
20
  * Redirects all traffic to www.
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
- == rack-www
1
+ = rack-www
2
2
 
3
- Rack middleware to force redirects all traffic to a single domain with or without www.
3
+ Rack middleware to force subdomain redirects, e.g: www.
4
4
 
5
5
  === Installation
6
6
 
@@ -10,25 +10,40 @@ Rack middleware to force redirects all traffic to a single domain with or withou
10
10
  #when using bundler
11
11
  gem 'rack-www'
12
12
 
13
+
13
14
  === Usage
14
15
 
15
- Default usage:
16
+ Default usage (by default will redirect all requests to www subdomain):
16
17
 
17
- #redirects all traffic to www
18
+ #redirects all traffic to www subdomain
18
19
  config.middleware.use Rack::WWW
19
20
 
20
- You can also customize the :www option to true or false:
21
+ Customizing the :www option to true or false:
21
22
 
22
23
  #redirects all traffic to www
23
24
  config.middleware.use Rack::WWW, :www => true
24
25
 
26
+
25
27
  #redirects all traffic to the same domain without www
26
28
  config.middleware.use Rack::WWW, :www => false
27
29
 
30
+ Redirecting to a given subdomain:
31
+
32
+ #redirects all traffic to the 'secure' subdomain
33
+ config.middleware.use Rack::WWW, :subdomain => "secure"
34
+
28
35
  If you like it's also possible to show a message while redirecting the user:
29
36
 
30
37
  config.middleware.use Rack::WWW, :www => false, :message => "You are being redirected..."
31
38
 
39
+
40
+ === Options
41
+
42
+ * :www => default is true, redirects all traffic to www;
43
+ * :subdomain => redirects to any given subdomain;
44
+ * :message => display a message while redirecting;
45
+
46
+
32
47
  === License
33
48
 
34
49
  MIT License. Copyright 2011 Jhimy Fernandes Villar. http://www.stjhimy.com
data/lib/rack/www.rb CHANGED
@@ -4,15 +4,18 @@ require 'rack/request'
4
4
  module Rack
5
5
  class WWW
6
6
  def initialize(app, options = {})
7
- @options = {:www => true}.merge(options)
7
+ @options = {:subdomain => "www" }.merge(options)
8
8
  @app = app
9
- @www = @options[:www]
9
+
10
+ @redirect = true
11
+ @redirect = @options[:www] if @options[:www] != nil
10
12
  @message = @options[:message]
13
+ @subdomain = @options[:subdomain]
11
14
  end
12
15
 
13
16
  def call(env)
14
- if (already_www?(env) && @www == true) || (!already_www?(env) && @www == false)
15
- status, headers, body = @app.call(env)
17
+ if (already_subdomain?(env) && @redirect) || (!already_subdomain?(env) && !@redirect)
18
+ @app.call(env)
16
19
  else
17
20
  url = prepare_url(env)
18
21
  headers = {"Content-Type" => "text/html", "location" => url}
@@ -21,27 +24,30 @@ module Rack
21
24
  end
22
25
 
23
26
  private
24
- def already_www?(env)
25
- env["HTTP_HOST"].downcase =~ /^(www.)/
27
+ def already_subdomain?(env)
28
+ env["HTTP_HOST"].downcase =~ /^(#{@subdomain}.)/
26
29
  end
27
30
 
28
31
  def prepare_url(env)
29
32
  scheme = env["rack.url_scheme"]
30
- host = env["SERVER_NAME"].gsub(/^(www.)/, "")
31
- path = env["PATH_INFO"].to_s
32
33
 
33
- if env["QUERY_STRING"].empty?
34
- query_string = ""
35
- else
34
+ host = env["SERVER_NAME"].gsub(/^(#{@subdomain}.)/, "")
35
+ host = host.gsub(/^(www.)/, "")
36
+
37
+ path = env["PATH_INFO"]
38
+
39
+ query_string = ""
40
+ if !env["QUERY_STRING"].empty?
36
41
  query_string = "?" + env["QUERY_STRING"]
37
42
  end
38
43
 
39
- if @www == true
40
- host = "://www." + host
44
+ if @redirect == true
45
+ host = "://#{@subdomain}." + host
41
46
  else
42
47
  host = "://" + host
43
48
  end
44
49
  scheme + host + path + query_string
45
50
  end
51
+
46
52
  end
47
53
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-www
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 1.2.0
10
+ version: 1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jhimy Fernandes Villar
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-17 00:00:00 -03:00
18
+ date: 2011-05-25 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: "0"
33
33
  type: :runtime
34
34
  version_requirements: *id001
35
- description: " Rack middleware to force redirects all traffic to a single domain with or without www.\n"
35
+ description: " Rack middleware to force subdomain redirects, e.g: www.\n"
36
36
  email: stjhimy@gmail.com
37
37
  executables: []
38
38
 
@@ -79,6 +79,6 @@ rubyforge_project:
79
79
  rubygems_version: 1.5.2
80
80
  signing_key:
81
81
  specification_version: 3
82
- summary: Force redirects to a single domain with or without www
82
+ summary: "Force redirects to a any given subdomain, e.g: www."
83
83
  test_files: []
84
84