rack-param_to_cookie 2.0.0 → 3.0.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.
- checksums.yaml +4 -4
- data/README.rdoc +4 -3
- data/lib/rack/param_to_cookie/version.rb +1 -1
- data/lib/rack/param_to_cookie.rb +5 -0
- data/test/rack/param_to_cookie/param_to_cookie_test.rb +15 -9
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ad04222bd754f08090d5e8308b648a4aa80afab
|
4
|
+
data.tar.gz: 440b3a794b871eaa7175881fa8ced68f8d4b0746
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5ab893233126b3da78e0cbd176eaedf2bb087e463b7967e25cbfdf836c608cdf5e0f470f72d183fcaf659897970a1069a1f53cb295dab86e00bbf817ebd4829
|
7
|
+
data.tar.gz: 31e4213b2c2b65ab1198d7c7a1af6b2c5a2b6d6e309ff5209c7d5755e3eb6e9fdef52dea5b5c79fc12e0bbd621fd2e1bc067daa909f795c351b4feac253c4487
|
data/README.rdoc
CHANGED
@@ -20,17 +20,18 @@ Rack::ParamToCookie is a rack middleware that extracts request parameters from r
|
|
20
20
|
In a Rails app, you can add it as middleware in +config/application.rb+. For a parameter called +ref+, the basic usage is:
|
21
21
|
|
22
22
|
config.middleware.use 'Rack::ParamToCookie', 'ref' => {}
|
23
|
-
|
23
|
+
|
24
24
|
This tells Rack::ParamToCookie to capture a request parameter called +ref+, store it in a cookie called +ref+, and make it available in your rails app as <tt>request.env['ref']</tt>. You can specify multiple parameters and configure them. Here's a more in-depth example:
|
25
25
|
|
26
26
|
config.middleware.use 'Rack::ParamToCookie',
|
27
27
|
'ref' => {cookie_name: 'referral_code',
|
28
28
|
env_name: 'referral.code',
|
29
|
-
ttl: 14*24*60*60
|
29
|
+
ttl: 14*24*60*60,
|
30
|
+
max_length: 12},
|
30
31
|
'aff' => {cookie_name: 'affiliate_code',
|
31
32
|
env_name: 'affiliate.code'}
|
32
33
|
|
33
|
-
The first cookie, +referral_code+ for parameter +ref+, has a 14 day time to live and is accessible in +request.env+ <tt>['referral.code']</tt>. The second, for parameter +aff+, has the default time to live, which is 30 days.
|
34
|
+
The first cookie, +referral_code+ for parameter +ref+, has a 14 day time to live, can be a maximum of 12 characters and is accessible in +request.env+ <tt>['referral.code']</tt>. The second, for parameter +aff+, has the default time to live, which is 30 days and can be the default maximum length, which is 64 characters.
|
34
35
|
|
35
36
|
== Installation
|
36
37
|
|
data/lib/rack/param_to_cookie.rb
CHANGED
@@ -19,6 +19,7 @@ module Rack
|
|
19
19
|
options[:env_name] ||= param
|
20
20
|
options[:ttl] ||= 60*60*24*30 # 30 days
|
21
21
|
options[:set_cookie_options] ||= {}
|
22
|
+
options[:max_length] ||= 64 # characters
|
22
23
|
end
|
23
24
|
end
|
24
25
|
|
@@ -33,6 +34,10 @@ module Rack
|
|
33
34
|
# check whether there's a new value for the cookie with this request
|
34
35
|
params_value = req.params[param] rescue nil
|
35
36
|
|
37
|
+
# validate the length of the value
|
38
|
+
params_value = nil if
|
39
|
+
params_value && params_value.length > options[:max_length]
|
40
|
+
|
36
41
|
value = params_value || cookie_value
|
37
42
|
env[options[:env_name]] = value if value
|
38
43
|
|
@@ -26,7 +26,7 @@ describe "Rack::ParamToCookie" do
|
|
26
26
|
it "should do nothing when there is no ref parameter" do
|
27
27
|
get '/'
|
28
28
|
|
29
|
-
|
29
|
+
assert_nil last_request.env['ref']
|
30
30
|
assert_equal({}, rack_mock_session.cookie_jar.to_hash)
|
31
31
|
end
|
32
32
|
|
@@ -41,7 +41,7 @@ describe "Rack::ParamToCookie" do
|
|
41
41
|
get '/'
|
42
42
|
assert_equal 'abc', last_request.env['ref']
|
43
43
|
assert_equal({'ref' => 'abc'}, rack_mock_session.cookie_jar.to_hash)
|
44
|
-
|
44
|
+
assert_nil last_response.headers['Set-Cookie']
|
45
45
|
|
46
46
|
# if we set it again, it gets overwritten
|
47
47
|
get '/', ref: '123'
|
@@ -53,14 +53,15 @@ describe "Rack::ParamToCookie" do
|
|
53
53
|
get '/'
|
54
54
|
assert_equal '123', last_request.env['ref']
|
55
55
|
assert_equal({'ref' => '123'}, rack_mock_session.cookie_jar.to_hash)
|
56
|
-
|
56
|
+
assert_nil last_response.headers['Set-Cookie']
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
describe "with multiple parameters and custom names" do
|
61
61
|
before do
|
62
62
|
make_app \
|
63
|
-
'ref' => {cookie_name: 'ref_cookie', env_name: 'ref.env', ttl: 10
|
63
|
+
'ref' => {cookie_name: 'ref_cookie', env_name: 'ref.env', ttl: 10,
|
64
|
+
max_length: 10},
|
64
65
|
'aff' => {cookie_name: 'aff_cookie', env_name: 'aff.env', ttl: 20}
|
65
66
|
clear_cookies
|
66
67
|
end
|
@@ -68,8 +69,8 @@ describe "Rack::ParamToCookie" do
|
|
68
69
|
it "should set ref and aff" do
|
69
70
|
# initially no cookies
|
70
71
|
get '/'
|
71
|
-
|
72
|
-
|
72
|
+
assert_nil last_request.env['ref.env']
|
73
|
+
assert_nil last_request.env['aff.env']
|
73
74
|
assert_equal({}, rack_mock_session.cookie_jar.to_hash)
|
74
75
|
|
75
76
|
# set both at the same time
|
@@ -95,7 +96,7 @@ describe "Rack::ParamToCookie" do
|
|
95
96
|
assert_equal 'bar', last_request.env['aff.env']
|
96
97
|
assert_equal({'ref_cookie' => 'foo', 'aff_cookie' => 'bar'},
|
97
98
|
rack_mock_session.cookie_jar.to_hash)
|
98
|
-
|
99
|
+
assert_nil last_response.headers['Set-Cookie']
|
99
100
|
|
100
101
|
# update ref
|
101
102
|
get '/', ref: 'baz'
|
@@ -112,7 +113,7 @@ describe "Rack::ParamToCookie" do
|
|
112
113
|
assert_equal 'bar', last_request.env['aff.env']
|
113
114
|
assert_equal({'ref_cookie' => 'baz', 'aff_cookie' => 'bar'},
|
114
115
|
rack_mock_session.cookie_jar.to_hash)
|
115
|
-
|
116
|
+
assert_nil last_response.headers['Set-Cookie']
|
116
117
|
|
117
118
|
# update aff
|
118
119
|
get '/', aff: 'bat'
|
@@ -129,7 +130,12 @@ describe "Rack::ParamToCookie" do
|
|
129
130
|
assert_equal 'bat', last_request.env['aff.env']
|
130
131
|
assert_equal({'ref_cookie' => 'baz', 'aff_cookie' => 'bat'},
|
131
132
|
rack_mock_session.cookie_jar.to_hash)
|
132
|
-
|
133
|
+
assert_nil last_response.headers['Set-Cookie']
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should not set cookies longer than the max length" do
|
137
|
+
get '/', ref: 'abcdefghijklmnopqrstuvwxyz'
|
138
|
+
assert_equal({}, rack_mock_session.cookie_jar.to_hash)
|
133
139
|
end
|
134
140
|
end
|
135
141
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-param_to_cookie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Lees-Miller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -74,7 +74,7 @@ rdoc_options:
|
|
74
74
|
- "--main"
|
75
75
|
- README.rdoc
|
76
76
|
- "--title"
|
77
|
-
- rack-param_to_cookie-
|
77
|
+
- rack-param_to_cookie-3.0.0 Documentation
|
78
78
|
require_paths:
|
79
79
|
- lib
|
80
80
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -89,10 +89,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
91
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.
|
92
|
+
rubygems_version: 2.6.12
|
93
93
|
signing_key:
|
94
94
|
specification_version: 4
|
95
95
|
summary: Store selected request parameters to cookies.
|
96
96
|
test_files:
|
97
97
|
- test/rack/param_to_cookie/param_to_cookie_test.rb
|
98
|
-
has_rdoc:
|