rack-www 1.4.0 → 1.5.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.
- data/README.rdoc +6 -0
- data/lib/rack/www.rb +34 -10
- metadata +36 -53
data/README.rdoc
CHANGED
@@ -36,6 +36,12 @@ If you like it's also possible to show a message while redirecting the user:
|
|
36
36
|
|
37
37
|
config.middleware.use Rack::WWW, :www => false, :message => "You are being redirected..."
|
38
38
|
|
39
|
+
You can optionally specify predicate to determine if redirect should take place:
|
40
|
+
|
41
|
+
config.middleware.use Rack::WWW, :predicate => lambda { |env|
|
42
|
+
!Rack::Request.new(env).params.has_key? "noredirect"
|
43
|
+
}
|
44
|
+
|
39
45
|
|
40
46
|
=== Options
|
41
47
|
|
data/lib/rack/www.rb
CHANGED
@@ -11,24 +11,48 @@ module Rack
|
|
11
11
|
@redirect = @options[:www] if @options[:www] != nil
|
12
12
|
@message = @options[:message]
|
13
13
|
@subdomain = @options[:subdomain]
|
14
|
+
@predicate = @options[:predicate]
|
14
15
|
end
|
15
16
|
|
16
17
|
def call(env)
|
17
|
-
if
|
18
|
-
|
18
|
+
if redirect?(env)
|
19
|
+
redirect(env)
|
19
20
|
else
|
20
|
-
|
21
|
-
headers = {"Content-Type" => "text/html", "location" => url}
|
22
|
-
if @message.respond_to?(:each)
|
23
|
-
message = @message
|
24
|
-
else
|
25
|
-
message = [@message || '']
|
26
|
-
end
|
27
|
-
[301, headers, message]
|
21
|
+
@app.call(env)
|
28
22
|
end
|
29
23
|
end
|
30
24
|
|
31
25
|
private
|
26
|
+
|
27
|
+
def redirect(env)
|
28
|
+
url = prepare_url(env)
|
29
|
+
headers = {"Content-Type" => "text/html", "location" => url}
|
30
|
+
|
31
|
+
if @message.respond_to?(:each)
|
32
|
+
message = @message
|
33
|
+
else
|
34
|
+
message = [@message || '']
|
35
|
+
end
|
36
|
+
[301, headers, message]
|
37
|
+
end
|
38
|
+
|
39
|
+
def redirect?(env)
|
40
|
+
predicate?(env) && change_subdomain?(env)
|
41
|
+
end
|
42
|
+
|
43
|
+
def predicate?(env)
|
44
|
+
if @predicate
|
45
|
+
@predicate.call env
|
46
|
+
else
|
47
|
+
true
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def change_subdomain?(env)
|
52
|
+
@redirect && !already_subdomain?(env) ||
|
53
|
+
!@redirect && already_subdomain?(env)
|
54
|
+
end
|
55
|
+
|
32
56
|
def already_subdomain?(env)
|
33
57
|
env["HTTP_HOST"].downcase =~ /^(#{@subdomain}.)/
|
34
58
|
end
|
metadata
CHANGED
@@ -1,84 +1,67 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-www
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.5.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
version: 1.4.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Jhimy Fernandes Villar
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-06-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rack
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 0
|
32
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
description: ! ' Rack middleware to force subdomain redirects, e.g: www.
|
31
|
+
|
32
|
+
'
|
36
33
|
email: stjhimy@gmail.com
|
37
34
|
executables: []
|
38
|
-
|
39
35
|
extensions: []
|
40
|
-
|
41
36
|
extra_rdoc_files: []
|
42
|
-
|
43
|
-
files:
|
37
|
+
files:
|
44
38
|
- lib/rack-www.rb
|
45
39
|
- lib/rack/www.rb
|
46
40
|
- LICENSE
|
47
41
|
- CHANGELOG.rdoc
|
48
42
|
- README.rdoc
|
49
|
-
has_rdoc: true
|
50
43
|
homepage: https://github.com/stjhimy/rack-www
|
51
44
|
licenses: []
|
52
|
-
|
53
45
|
post_install_message:
|
54
46
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
47
|
+
require_paths:
|
57
48
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
50
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
|
64
|
-
|
65
|
-
- 0
|
66
|
-
version: "0"
|
67
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
56
|
none: false
|
69
|
-
requirements:
|
70
|
-
- -
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 0
|
75
|
-
version: "0"
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
76
61
|
requirements: []
|
77
|
-
|
78
62
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.
|
63
|
+
rubygems_version: 1.8.24
|
80
64
|
signing_key:
|
81
65
|
specification_version: 3
|
82
|
-
summary:
|
66
|
+
summary: ! 'Force redirects to a any given subdomain, e.g: www.'
|
83
67
|
test_files: []
|
84
|
-
|