rack-www 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/CHANGELOG.rdoc +5 -0
  2. data/lib/rack/www.rb +19 -15
  3. metadata +4 -4
data/CHANGELOG.rdoc CHANGED
@@ -1,3 +1,8 @@
1
+ == 1.2
2
+ * Redirects to the right url without calling the app
3
+ * Keep the path when redirecting
4
+ * Keep the query string when redirecting
5
+ * Added more tests
1
6
  == 1.1
2
7
  * Added possibility to redirects with www or without www.
3
8
  * Added possibility to set a param :message to show while redirecting.
data/lib/rack/www.rb CHANGED
@@ -11,33 +11,37 @@ module Rack
11
11
  end
12
12
 
13
13
  def call(env)
14
- status, headers, body = @app.call(env)
15
- req = Request.new(env)
16
- host = URI(req.host).to_s
17
- if (already_www?(host) && @www == true) || (!already_www?(host) && @www == false)
18
- [status, headers, @message || body]
14
+ if (already_www?(env) && @www == true) || (!already_www?(env) && @www == false)
15
+ status, headers, body = @app.call(env)
19
16
  else
20
- url = prepare_url(req)
21
- headers = headers.merge('Location' => url)
22
- [301, headers, @message || body]
17
+ url = prepare_url(env)
18
+ headers = {"Content-Type" => "text/html", "location" => url}
19
+ [301, headers, @message || ""]
23
20
  end
24
21
  end
25
22
 
26
23
  private
27
- def already_www?(host)
28
- host.downcase =~ /^(www.)/
24
+ def already_www?(env)
25
+ env["HTTP_HOST"].downcase =~ /^(www.)/
29
26
  end
30
27
 
31
- def prepare_url(req)
32
- scheme = URI(req.url).scheme
33
- host = URI(req.host).to_s.gsub(/^(www.)/, "")
34
- path = URI(req.path).to_s
28
+ def prepare_url(env)
29
+ scheme = env["rack.url_scheme"]
30
+ host = env["SERVER_NAME"].gsub(/^(www.)/, "")
31
+ path = env["PATH_INFO"].to_s
32
+
33
+ if env["QUERY_STRING"].empty?
34
+ query_string = ""
35
+ else
36
+ query_string = "?" + env["QUERY_STRING"]
37
+ end
38
+
35
39
  if @www == true
36
40
  host = "://www." + host
37
41
  else
38
42
  host = "://" + host
39
43
  end
40
- scheme + host + path
44
+ scheme + host + path + query_string
41
45
  end
42
46
  end
43
47
  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: 19
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 1.1.0
10
+ version: 1.2.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-10 00:00:00 -03:00
18
+ date: 2011-05-17 00:00:00 -03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency