rewrite-tester 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -4
- data/lib/redirects.rb +3 -3
- data/lib/rewrite_rule.rb +26 -7
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 763e235adb195c5ca273470564ebd7b0d9c484b9
|
4
|
+
data.tar.gz: e94fe3e995481687c8a7d229d4857c8a2d18a2b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 860246b0af05c765a004a38950c2795d5d62f72b0b8c2526469ec99cbfb759a2fefcf0daf443bbbf17047e5db9854b0552a34bef7a9e8e77f2e89f1aa75b75f4
|
7
|
+
data.tar.gz: d973871a71c7d4f1190fda33926b2eecce77d7c45a33d7d4d3241bd4101eb1938bb86801053258394e269d3d41e84c8bf437a95334280efdbddfc88e0752feff
|
data/README.md
CHANGED
@@ -11,10 +11,10 @@ Usage
|
|
11
11
|
|
12
12
|
- From the sources
|
13
13
|
|
14
|
-
- Clone the repository and use the default rake task to run the tests. You will need to give the absolute path of a file containing a list of `RewriteRules` through a `RULES` env variable.
|
14
|
+
- Clone the repository and use the default rake task to run the tests. You will need to give the absolute path of a file containing a list of `RewriteRules` through a `RULES` env variable. Additionally you will need to provide a `HTTP_HOST` env variable, containing the host that you are testing against.
|
15
15
|
|
16
16
|
`bash
|
17
|
-
$ RULES=/path/to//my/rules rake
|
17
|
+
$ HTTP_HOST=www.example.com RULES=/path/to//my/rules rake
|
18
18
|
`
|
19
19
|
|
20
20
|
- From your project
|
@@ -28,10 +28,10 @@ Usage
|
|
28
28
|
- Use the `test:redirects` rake task by giving a absolute file path to the `RULES` env variable.
|
29
29
|
|
30
30
|
`bash
|
31
|
-
$ RULES=/path/to//my/rules rake test:redirects
|
31
|
+
$ HTTP_HOST=www.example.com RULES=/path/to//my/rules rake test:redirects
|
32
32
|
`
|
33
33
|
|
34
34
|
LICENSE
|
35
35
|
===
|
36
36
|
|
37
|
-
MIT
|
37
|
+
MIT
|
data/lib/redirects.rb
CHANGED
@@ -2,12 +2,12 @@ require 'rewrite_rule'
|
|
2
2
|
|
3
3
|
class Redirects
|
4
4
|
|
5
|
-
def initialize
|
5
|
+
def initialize(io_instance, http_host = 'example.com')
|
6
6
|
@rules = []
|
7
7
|
|
8
8
|
unless io_instance.nil?
|
9
9
|
io_instance.readlines.each do |line|
|
10
|
-
@rules << RewriteRule.new(line)
|
10
|
+
@rules << RewriteRule.new(line, http_host)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -24,4 +24,4 @@ class Redirects
|
|
24
24
|
|
25
25
|
attr_accessor :rules
|
26
26
|
|
27
|
-
end
|
27
|
+
end
|
data/lib/rewrite_rule.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
class RewriteRule
|
2
2
|
|
3
|
-
attr_accessor :possibilities, :substitution
|
3
|
+
attr_accessor :possibilities, :substitution, :line
|
4
4
|
|
5
|
-
def initialize(line)
|
5
|
+
def initialize(line, http_host = 'example.com', http_scheme = 'http://')
|
6
|
+
@line = line
|
7
|
+
@http_host = http_host
|
8
|
+
@http_scheme = http_scheme
|
6
9
|
self.parse line
|
7
10
|
end
|
8
11
|
|
@@ -15,7 +18,7 @@ class RewriteRule
|
|
15
18
|
|
16
19
|
@regex = match_data[1]
|
17
20
|
@possibilities = generate_possibilities @regex
|
18
|
-
@substitution = match_data[2]
|
21
|
+
@substitution = substitute match_data[2]
|
19
22
|
@flags = match_data[3].split(',')
|
20
23
|
|
21
24
|
end
|
@@ -25,12 +28,12 @@ class RewriteRule
|
|
25
28
|
end
|
26
29
|
|
27
30
|
def redirection?
|
28
|
-
!@flags.nil? && @flags.
|
31
|
+
!@flags.nil? && @flags.any?{ |flag| /^R/.match(flag) }
|
29
32
|
end
|
30
33
|
|
31
34
|
def redirects
|
32
35
|
@possibilities.map { |possibility|
|
33
|
-
{ possibility => @substitution}
|
36
|
+
{ possibility => { :substitution => @substitution, :code => redirection_code(@flags) } }
|
34
37
|
}
|
35
38
|
end
|
36
39
|
|
@@ -50,7 +53,23 @@ class RewriteRule
|
|
50
53
|
|
51
54
|
# Anything will be replaced by nothing
|
52
55
|
some.map { |possibility|
|
53
|
-
"
|
56
|
+
"#{@http_scheme}#{@http_host}#{possibility.gsub('(.*)', '')}"
|
54
57
|
}
|
55
58
|
end
|
56
|
-
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def redirection_code flags
|
63
|
+
redirect_regex = /^R=?([0-9]{3})?$/
|
64
|
+
redirect_regex.match(flags.detect { |flag| redirect_regex.match(flag) })[1] || '302'
|
65
|
+
end
|
66
|
+
|
67
|
+
def substitute substitute_rule
|
68
|
+
substitution = substitute_rule
|
69
|
+
substitution = "#{@http_scheme}#{@http_host}#{substitution}" if /^\//.match(substitution)
|
70
|
+
substitution = substitution.
|
71
|
+
gsub(/\$[0-9]+/, '').
|
72
|
+
gsub('%{HTTP_HOST}', @http_host).
|
73
|
+
gsub('%{HTTP_SCHEME}', @http_scheme)
|
74
|
+
end
|
75
|
+
end
|