rewrite-tester 0.0.2 → 0.0.3
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.
- 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
|