rewritten 0.16.4 → 0.16.5
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/HISTORY.rdoc +4 -0
- data/lib/rack/url.rb +9 -16
- data/lib/rewritten.rb +5 -9
- data/lib/rewritten/version.rb +1 -1
- data/test/rack/rewritten_url_test.rb +9 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1341c9fb6a042d2864f1cc01c903650661a55de
|
4
|
+
data.tar.gz: 24354a7bdc753c6038edd3871579d5e5c49b209f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a2ae4fb9c6a89d26da98461eba2a7580506cc9180764754cc497b7138f4d4906f66c4f94df787bdbf1e9ad4aa21b4bd76f7da180b47009cdd46808169203228
|
7
|
+
data.tar.gz: 1699d501b7b6df4037f5576fd8794670ba3a73de135b6a787f48f9567fc71cba482a95f7d5ae1f9c215b90146a16c0c4d8bebf025e10bdec1917750a4b354ef7
|
data/HISTORY.rdoc
CHANGED
data/lib/rack/url.rb
CHANGED
@@ -29,17 +29,19 @@ module Rack
|
|
29
29
|
subdomain = env['SUBDOMAIN'] ? "#{env['SUBDOMAIN']}:" : ''
|
30
30
|
|
31
31
|
path = "#{subdomain}#{req.path_info}"
|
32
|
-
path.downcase! if downcase_before_lookup
|
32
|
+
path.downcase! if downcase_before_lookup
|
33
33
|
|
34
34
|
target_url = ::Rewritten.translate(path)
|
35
35
|
|
36
|
+
chomped_fullpath = req.fullpath.split('?').map { |s| s.chomp('/') }.join('?')
|
37
|
+
|
36
38
|
if external_target?(target_url)
|
37
39
|
r = Rack::Response.new
|
38
40
|
r.redirect(target_url, 301)
|
39
41
|
r.finish
|
40
|
-
elsif ::Rewritten.includes?(
|
42
|
+
elsif ::Rewritten.includes?(chomped_fullpath) || ::Rewritten.includes?(path.chomp('/')) || backwards = (translate_backwards?(path) && ::Rewritten.exist_translation_for?(path))
|
41
43
|
|
42
|
-
to = ::Rewritten.includes?(
|
44
|
+
to = ::Rewritten.includes?(chomped_fullpath)
|
43
45
|
to ||= ::Rewritten.includes?(path.chomp('/')) || path
|
44
46
|
|
45
47
|
current_path = ::Rewritten.get_current_translation(to)
|
@@ -54,18 +56,18 @@ module Rack
|
|
54
56
|
new_path << '://'
|
55
57
|
new_path << env['HTTP_HOST'].dup.sub(/^#{subdomain.chomp(':')}\./, '')
|
56
58
|
new_path << current_path
|
57
|
-
new_path << ::Rewritten.appendix(
|
59
|
+
new_path << ::Rewritten.appendix(chomped_fullpath) unless backwards
|
58
60
|
new_path << '?' << env['QUERY_STRING'] unless (env['QUERY_STRING'] || '').empty?
|
59
61
|
|
60
62
|
r.redirect(new_path, 301)
|
61
63
|
return r.finish
|
62
64
|
end
|
63
65
|
|
64
|
-
if (
|
66
|
+
if (chomped_fullpath == current_path_with_query || current_path == req.path_info) || (::Rewritten.base_from(req.path_info) == current_path) || ::Rewritten.flag?(path, 'L')
|
65
67
|
# if this is the current path, rewrite path and parameters
|
66
68
|
tpath, tparams = split_to_path_params(to)
|
67
69
|
env['QUERY_STRING'] = Rack::Utils.build_nested_query(tparams.merge(req.params))
|
68
|
-
req.path_info = tpath + ::Rewritten.appendix(
|
70
|
+
req.path_info = tpath + ::Rewritten.appendix(chomped_fullpath)
|
69
71
|
@app.call(req.env)
|
70
72
|
else
|
71
73
|
# if this is not the current path, redirect to current path
|
@@ -107,16 +109,7 @@ module Rack
|
|
107
109
|
|
108
110
|
attr_writer :translate_backwards
|
109
111
|
attr_accessor :translate_backwards_exceptions
|
110
|
-
|
111
|
-
def downcase_before_lookup?
|
112
|
-
@downcase_before_lookup
|
113
|
-
end
|
114
|
-
|
115
|
-
attr_writer :downcase_before_lookup
|
116
|
-
|
117
|
-
def translate_partial?
|
118
|
-
@translate_partial
|
119
|
-
end
|
112
|
+
attr_accessor :downcase_before_lookup
|
120
113
|
|
121
114
|
def translate_partial=(yes_or_no)
|
122
115
|
$stderr.puts 'DEPRECATED. Please use Rewritten.translate_partial'
|
data/lib/rewritten.rb
CHANGED
@@ -41,11 +41,7 @@ module Rewritten
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
def translate_partial?
|
47
|
-
@translate_partial
|
48
|
-
end
|
44
|
+
attr_accessor :translate_partial
|
49
45
|
|
50
46
|
# Returns the current Redis connection. If none has been created, will
|
51
47
|
# create a new one.
|
@@ -194,7 +190,7 @@ module Rewritten
|
|
194
190
|
translation = Rewritten.z_range("to:#{uri.path}", -1) unless translation
|
195
191
|
|
196
192
|
if translation.nil?
|
197
|
-
if translate_partial
|
193
|
+
if translate_partial && path.count('/') > 1
|
198
194
|
parts = path.split('/')
|
199
195
|
shorter_path = parts.slice(0, parts.size - 1).join('/')
|
200
196
|
appendix = parts.last + (tail ? '/' + tail : '')
|
@@ -221,7 +217,7 @@ module Rewritten
|
|
221
217
|
to = translate(conjugated)
|
222
218
|
to = translate(conjugated.split('?')[0]) unless to
|
223
219
|
|
224
|
-
if to.nil? && translate_partial
|
220
|
+
if to.nil? && translate_partial && conjugated.count('/') > 1
|
225
221
|
parts = conjugated.split('/')
|
226
222
|
shorter_path = parts.slice(0, parts.size - 1).join('/')
|
227
223
|
infinitive(shorter_path)
|
@@ -238,7 +234,7 @@ module Rewritten
|
|
238
234
|
some_from
|
239
235
|
elsif translate(base_from)
|
240
236
|
base_from
|
241
|
-
elsif translate_partial
|
237
|
+
elsif translate_partial && base_from.count('/') > 1
|
242
238
|
parts = base_from.split('/')
|
243
239
|
base_from(parts.slice(0, parts.size - 1).join('/'))
|
244
240
|
end
|
@@ -287,7 +283,7 @@ module Rewritten
|
|
287
283
|
result = Rewritten.redis.hget("from:#{path.chomp('/')}", :to)
|
288
284
|
result = Rewritten.redis.hget("from:#{path.split('?')[0]}", :to) unless result
|
289
285
|
|
290
|
-
if result.nil? && translate_partial
|
286
|
+
if result.nil? && translate_partial && path.count('/') > 1
|
291
287
|
parts = path.split('/')
|
292
288
|
includes?(parts.slice(0, parts.size - 1).join('/'))
|
293
289
|
else
|
data/lib/rewritten/version.rb
CHANGED
@@ -141,13 +141,21 @@ describe Rack::Rewritten::Url do
|
|
141
141
|
ret[1]['Location'].must_equal 'http://www.example.org/foo/baz'
|
142
142
|
end
|
143
143
|
|
144
|
+
it 'must 301 redirect current paths with / before the query string to their chomped version' do
|
145
|
+
Rewritten.add_translation '/path/with/params?w=1', '/embed/2'
|
146
|
+
ret = @rack.call request_url('/path/with/params/', 'QUERY_STRING' => 'w=1')
|
147
|
+
@app.verify
|
148
|
+
ret[0].must_equal 301
|
149
|
+
ret[1]['Location'].must_equal 'http://www.example.org/path/with/params?w=1'
|
150
|
+
end
|
151
|
+
|
144
152
|
it 'wont 301 redirect /' do
|
145
153
|
@app.expect :call, [200, { 'Content-Type' => 'text/plain' }, ['']], [Hash]
|
146
154
|
ret = @rack.call request_url('/')
|
147
155
|
@app.verify
|
148
156
|
end
|
149
157
|
|
150
|
-
it 'must 301 redirect paths with / in the end to their current chomped version' do
|
158
|
+
it 'must 301 redirect non-current paths with / in the end to their current chomped version' do
|
151
159
|
ret = @rack.call request_url('/foo/bar/')
|
152
160
|
@app.verify
|
153
161
|
ret[0].must_equal 301
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rewritten
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kai Rubarth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-namespace
|