rack-www 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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