rack-www-enforcer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
- Rack::WwwRedirect
1
+ Rack::WwwEnforcer
2
2
  =================
3
3
 
4
- Rack Middleware for redirect requests to an specific subdomain of your app. (Ex. http://mysite.com to https://app.mysite.com)
4
+ Rack Middleware for redirect requests to an specific subdomain of your app. (Ex. http://mysite.com to http://app.mysite.com)
5
5
 
6
6
  Usage
7
7
  -------
8
8
 
9
- use Rack::WwwRedirect, :subdomain => "app"
9
+ use Rack::WwwEnforcer, :subdomain => "app"
10
10
 
11
- If subdomain isn't present "www" is used by default
11
+ If subdomain isn't present "www" is used by default.
12
+
13
+ You can use it in your Rails app, in the environment configuration file add it to Middleware stack:
14
+
15
+ config.middleware.insert_before ActionDispatch::Static, Rack::WwwEnforcer
@@ -7,6 +7,7 @@ module Rack
7
7
  def initialize(app, options = {})
8
8
  @app = app
9
9
  @subdomain = options[:subdomain] || "www"
10
+ @replace_subdomain = options[:replace_subdomain]
10
11
  end
11
12
 
12
13
  def call(env)
@@ -27,7 +28,11 @@ module Rack
27
28
 
28
29
  def redirect_to_subdomain(req)
29
30
  url = URI(req.url)
30
- url.host = "#{@subdomain}.#{url.host}"
31
+ unless @replace_subdomain
32
+ url.host = "#{@subdomain}.#{url.host}"
33
+ else
34
+ url.host = url.host.gsub(/^([^.]+)(\..*)$/, "#{@subdomain}#{'\2'}")
35
+ end
31
36
  headers = {'Content-Type' => 'text/html', 'Location' => url.to_s}
32
37
 
33
38
  [301, headers, []]
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rack-www-enforcer"
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
  s.authors = ["Guillermo Iguaran"]
7
7
  s.email = ["guilleiguaran@gmail.com"]
8
8
  s.homepage = "https://github.com/guilleiguaran/rack-www-enforcer"
@@ -26,9 +26,22 @@ class TestWwwEnforcer < Test::Unit::TestCase
26
26
  end
27
27
 
28
28
  def test_redirect_to_custom_subdomain
29
+ old_app = self.app
29
30
  self.app = Rack::WwwEnforcer.new(mock_app, :subdomain => "app")
30
31
  get "http://example.org/"
31
32
  assert_equal "http://app.example.org/",
32
33
  last_response.headers['Location']
34
+ ensure
35
+ self.app = old_app
36
+ end
37
+
38
+ def test_redirect_if_subdomain_already_given_and_replacing_subdomain
39
+ old_app = self.app
40
+ self.app = Rack::WwwEnforcer.new(mock_app, :subdomain => "app", :replace_subdomain => true)
41
+ get "http://www.example.org"
42
+ assert_equal "http://app.example.org/",
43
+ last_response.headers['Location']
44
+ ensure
45
+ self.app = old_app
33
46
  end
34
47
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-www-enforcer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-06 00:00:00.000000000Z
12
+ date: 2012-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
- requirement: &2157511420 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2157511420
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  description: ! ' Rack middleware to redirect requests to an specific subdomain
26
31
  in your app.
27
32
 
@@ -61,9 +66,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
61
66
  version: '0'
62
67
  requirements: []
63
68
  rubyforge_project:
64
- rubygems_version: 1.8.5
69
+ rubygems_version: 1.8.22
65
70
  signing_key:
66
71
  specification_version: 3
67
72
  summary: Redirect requests to a subdomain in your app
68
73
  test_files:
69
74
  - test/test_www-enforcer.rb
75
+ has_rdoc: