http-cookie 0.1.4 → 0.1.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 +7 -0
- data/.travis.yml +15 -0
- data/http-cookie.gemspec +2 -0
- data/lib/http/cookie.rb +8 -5
- data/lib/http/cookie/version.rb +1 -1
- data/lib/http/cookie_jar/cookiestxt_saver.rb +2 -2
- data/test/test_http_cookie.rb +20 -24
- data/test/test_http_cookie_jar.rb +2 -1
- metadata +42 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c45ee093b1364bc1ce8c5c4120a4f4fae298a5e6
|
4
|
+
data.tar.gz: d007f3979523ad48a557281b99292d660a5d781b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 62257900f2b0e4ffad506bff326f11b724ebcb0f3495cdc156338188efc8db7c4bfb49d155ae43ea50889f5e0acb4059586f016a0c5fd84f659e58605b512d49
|
7
|
+
data.tar.gz: c3f9f8a5deafe3335063e8cf3b09d054da55d01729b47e7b55171e06585b8e270da021bcea1804132b0fabe855b90d3d21c2cc333913b7283c318167f799496b
|
data/.travis.yml
ADDED
data/http-cookie.gemspec
CHANGED
@@ -25,5 +25,7 @@ Gem::Specification.new do |gem|
|
|
25
25
|
gem.add_runtime_dependency("domain_name", ["~> 0.5"])
|
26
26
|
gem.add_development_dependency("bundler", [">= 1.2.0"])
|
27
27
|
gem.add_development_dependency("test-unit", [">= 2.4.3"])
|
28
|
+
gem.add_development_dependency("rake", [">= 0.9.2.2"])
|
29
|
+
gem.add_development_dependency("rdoc", ["> 2.4.2"])
|
28
30
|
gem.add_development_dependency("simplecov", [">= 0"])
|
29
31
|
end
|
data/lib/http/cookie.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'http/cookie/version'
|
2
2
|
require 'time'
|
3
|
-
require '
|
3
|
+
require 'uri'
|
4
4
|
require 'domain_name'
|
5
5
|
|
6
6
|
module HTTP
|
@@ -180,14 +180,14 @@ class HTTP::Cookie
|
|
180
180
|
date ||= Time.now
|
181
181
|
|
182
182
|
[].tap { |cookies|
|
183
|
-
|
183
|
+
# The expires attribute may include a comma in the value.
|
184
|
+
set_cookie.split(/,(?=[^;,]*=|\s*\z)/).each { |c|
|
184
185
|
if c.bytesize > MAX_LENGTH
|
185
186
|
logger.warn("Cookie definition too long: #{c}") if logger
|
186
187
|
next
|
187
188
|
end
|
188
189
|
|
189
|
-
cookie_elem = c.split(/;+/)
|
190
|
-
first_elem = cookie_elem.shift
|
190
|
+
first_elem, *cookie_elem = c.split(/;+/)
|
191
191
|
first_elem.strip!
|
192
192
|
key, value = first_elem.split(/\=/, 2)
|
193
193
|
|
@@ -202,7 +202,10 @@ class HTTP::Cookie
|
|
202
202
|
pair.strip!
|
203
203
|
key, value = pair.split(/=/, 2) #/)
|
204
204
|
next unless key
|
205
|
-
value
|
205
|
+
case value # may be nil
|
206
|
+
when /\A"(.*)"\z/
|
207
|
+
value = $1.gsub(/\\(.)/, "\\1")
|
208
|
+
end
|
206
209
|
|
207
210
|
case key.downcase
|
208
211
|
when 'domain'
|
data/lib/http/cookie/version.rb
CHANGED
data/test/test_http_cookie.rb
CHANGED
@@ -48,10 +48,10 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
48
48
|
dates.each do |date|
|
49
49
|
cookie = "PREF=1; expires=#{date}"
|
50
50
|
silently do
|
51
|
-
HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
51
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
52
52
|
assert c.expires, "Tried parsing: #{date}"
|
53
53
|
assert_equal(true, c.expires < yesterday)
|
54
|
-
}
|
54
|
+
}.size
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
@@ -61,10 +61,10 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
61
61
|
|
62
62
|
uri = URI.parse 'http://example'
|
63
63
|
|
64
|
-
HTTP::Cookie.parse
|
64
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, :origin => uri) { |cookie|
|
65
65
|
assert_equal 'a', cookie.name
|
66
66
|
assert_equal 'b', cookie.value
|
67
|
-
|
67
|
+
}.size
|
68
68
|
end
|
69
69
|
|
70
70
|
def test_parse_no_space
|
@@ -72,12 +72,12 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
72
72
|
|
73
73
|
uri = URI.parse 'http://example'
|
74
74
|
|
75
|
-
HTTP::Cookie.parse
|
75
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, :origin => uri) { |cookie|
|
76
76
|
assert_equal 'foo', cookie.name
|
77
77
|
assert_equal 'bar', cookie.value
|
78
78
|
assert_equal '/', cookie.path
|
79
79
|
assert_equal Time.at(1320539286), cookie.expires
|
80
|
-
|
80
|
+
}.size
|
81
81
|
end
|
82
82
|
|
83
83
|
def test_parse_too_long_cookie
|
@@ -95,63 +95,60 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
95
95
|
|
96
96
|
def test_parse_quoted
|
97
97
|
cookie_str =
|
98
|
-
"quoted=\"value\"; Expires=Sun, 06 Nov 2011 00:11:18 GMT; Path
|
98
|
+
"quoted=\"value\"; Expires=Sun, 06 Nov 2011 00:11:18 GMT; Path=/; comment=\"comment is \\\"comment\\\"\""
|
99
99
|
|
100
100
|
uri = URI.parse 'http://example'
|
101
101
|
|
102
|
-
HTTP::Cookie.parse
|
102
|
+
assert_equal 1, HTTP::Cookie.parse(cookie_str, :origin => uri) { |cookie|
|
103
103
|
assert_equal 'quoted', cookie.name
|
104
104
|
assert_equal '"value"', cookie.value
|
105
|
-
|
105
|
+
assert_equal 'comment is "comment"', cookie.comment
|
106
|
+
}.size
|
106
107
|
end
|
107
108
|
|
108
109
|
def test_parse_weird_cookie
|
109
110
|
cookie = 'n/a, ASPSESSIONIDCSRRQDQR=FBLDGHPBNDJCPCGNCPAENELB; path=/'
|
110
111
|
url = URI.parse('http://www.searchinnovation.com/')
|
111
|
-
HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
112
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
112
113
|
assert_equal('ASPSESSIONIDCSRRQDQR', c.name)
|
113
114
|
assert_equal('FBLDGHPBNDJCPCGNCPAENELB', c.value)
|
114
|
-
}
|
115
|
+
}.size
|
115
116
|
end
|
116
117
|
|
117
118
|
def test_double_semicolon
|
118
119
|
double_semi = 'WSIDC=WEST;; domain=.williams-sonoma.com; path=/'
|
119
120
|
url = URI.parse('http://williams-sonoma.com/')
|
120
|
-
HTTP::Cookie.parse(double_semi, :origin => url) { |cookie|
|
121
|
+
assert_equal 1, HTTP::Cookie.parse(double_semi, :origin => url) { |cookie|
|
121
122
|
assert_equal('WSIDC', cookie.name)
|
122
123
|
assert_equal('WEST', cookie.value)
|
123
|
-
}
|
124
|
+
}.size
|
124
125
|
end
|
125
126
|
|
126
127
|
def test_parse_bad_version
|
127
128
|
bad_cookie = 'PRETANET=TGIAqbFXtt; Name=/PRETANET; Path=/; Version=1.2; Content-type=text/html; Domain=192.168.6.196; expires=Friday, 13-November-2026 23:01:46 GMT;'
|
128
129
|
url = URI.parse('http://localhost/')
|
129
|
-
HTTP::Cookie.parse(bad_cookie, :origin => url)
|
130
|
-
assert_nil(cookie.version)
|
131
|
-
}
|
130
|
+
assert_equal 0, HTTP::Cookie.parse(bad_cookie, :origin => url).size
|
132
131
|
end
|
133
132
|
|
134
133
|
def test_parse_bad_max_age
|
135
134
|
bad_cookie = 'PRETANET=TGIAqbFXtt; Name=/PRETANET; Path=/; Max-Age=1.2; Content-type=text/html; Domain=192.168.6.196; expires=Friday, 13-November-2026 23:01:46 GMT;'
|
136
135
|
url = URI.parse('http://localhost/')
|
137
|
-
HTTP::Cookie.parse(bad_cookie, :origin => url)
|
138
|
-
assert_nil(cookie.max_age)
|
139
|
-
}
|
136
|
+
assert_equal 0, HTTP::Cookie.parse(bad_cookie, :origin => url).size
|
140
137
|
end
|
141
138
|
|
142
139
|
def test_parse_date_fail
|
143
140
|
url = URI.parse('http://localhost/')
|
144
141
|
|
145
|
-
dates = [
|
146
|
-
|
142
|
+
dates = [
|
143
|
+
"20/06/95 21:07",
|
147
144
|
]
|
148
145
|
|
149
146
|
silently do
|
150
147
|
dates.each do |date|
|
151
148
|
cookie = "PREF=1; expires=#{date}"
|
152
|
-
HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
149
|
+
assert_equal 1, HTTP::Cookie.parse(cookie, :origin => url) { |c|
|
153
150
|
assert_equal(true, c.expires.nil?)
|
154
|
-
}
|
151
|
+
}.size
|
155
152
|
end
|
156
153
|
end
|
157
154
|
end
|
@@ -626,4 +623,3 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
626
623
|
}
|
627
624
|
end
|
628
625
|
end
|
629
|
-
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.expand_path('helper', File.dirname(__FILE__))
|
2
|
+
require 'tmpdir'
|
2
3
|
|
3
4
|
class TestHTTPCookieJar < Test::Unit::TestCase
|
4
5
|
def setup
|
@@ -366,7 +367,7 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
366
367
|
|
367
368
|
assert_equal(3, @jar.cookies(url).length)
|
368
369
|
|
369
|
-
Dir.
|
370
|
+
Dir.mktmpdir do |dir|
|
370
371
|
@jar.save(File.join(dir, "cookies.txt"), :cookiestxt)
|
371
372
|
|
372
373
|
jar = HTTP::CookieJar.new
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http-cookie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.5
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Akinori MUSHA
|
@@ -12,12 +11,11 @@ authors:
|
|
12
11
|
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date: 2013-03-
|
14
|
+
date: 2013-03-17 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: domain_name
|
19
18
|
requirement: !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
19
|
requirements:
|
22
20
|
- - ~>
|
23
21
|
- !ruby/object:Gem::Version
|
@@ -25,7 +23,6 @@ dependencies:
|
|
25
23
|
type: :runtime
|
26
24
|
prerelease: false
|
27
25
|
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
none: false
|
29
26
|
requirements:
|
30
27
|
- - ~>
|
31
28
|
- !ruby/object:Gem::Version
|
@@ -33,49 +30,71 @@ dependencies:
|
|
33
30
|
- !ruby/object:Gem::Dependency
|
34
31
|
name: bundler
|
35
32
|
requirement: !ruby/object:Gem::Requirement
|
36
|
-
none: false
|
37
33
|
requirements:
|
38
|
-
- -
|
34
|
+
- - '>='
|
39
35
|
- !ruby/object:Gem::Version
|
40
36
|
version: 1.2.0
|
41
37
|
type: :development
|
42
38
|
prerelease: false
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
40
|
requirements:
|
46
|
-
- -
|
41
|
+
- - '>='
|
47
42
|
- !ruby/object:Gem::Version
|
48
43
|
version: 1.2.0
|
49
44
|
- !ruby/object:Gem::Dependency
|
50
45
|
name: test-unit
|
51
46
|
requirement: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
47
|
requirements:
|
54
|
-
- -
|
48
|
+
- - '>='
|
55
49
|
- !ruby/object:Gem::Version
|
56
50
|
version: 2.4.3
|
57
51
|
type: :development
|
58
52
|
prerelease: false
|
59
53
|
version_requirements: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
54
|
requirements:
|
62
|
-
- -
|
55
|
+
- - '>='
|
63
56
|
- !ruby/object:Gem::Version
|
64
57
|
version: 2.4.3
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rake
|
60
|
+
requirement: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 0.9.2.2
|
65
|
+
type: :development
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: 0.9.2.2
|
72
|
+
- !ruby/object:Gem::Dependency
|
73
|
+
name: rdoc
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - '>'
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 2.4.2
|
79
|
+
type: :development
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>'
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 2.4.2
|
65
86
|
- !ruby/object:Gem::Dependency
|
66
87
|
name: simplecov
|
67
88
|
requirement: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
89
|
requirements:
|
70
|
-
- -
|
90
|
+
- - '>='
|
71
91
|
- !ruby/object:Gem::Version
|
72
92
|
version: '0'
|
73
93
|
type: :development
|
74
94
|
prerelease: false
|
75
95
|
version_requirements: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
96
|
requirements:
|
78
|
-
- -
|
97
|
+
- - '>='
|
79
98
|
- !ruby/object:Gem::Version
|
80
99
|
version: '0'
|
81
100
|
description: A Ruby library to handle HTTP Cookies
|
@@ -89,6 +108,7 @@ extensions: []
|
|
89
108
|
extra_rdoc_files: []
|
90
109
|
files:
|
91
110
|
- .gitignore
|
111
|
+
- .travis.yml
|
92
112
|
- Gemfile
|
93
113
|
- LICENSE.txt
|
94
114
|
- README.md
|
@@ -109,27 +129,26 @@ files:
|
|
109
129
|
- test/test_http_cookie_jar.rb
|
110
130
|
homepage: https://github.com/sparklemotion/http-cookie
|
111
131
|
licenses: []
|
132
|
+
metadata: {}
|
112
133
|
post_install_message:
|
113
134
|
rdoc_options: []
|
114
135
|
require_paths:
|
115
136
|
- lib
|
116
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
138
|
requirements:
|
119
|
-
- -
|
139
|
+
- - '>='
|
120
140
|
- !ruby/object:Gem::Version
|
121
141
|
version: '0'
|
122
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
-
none: false
|
124
143
|
requirements:
|
125
|
-
- -
|
144
|
+
- - '>='
|
126
145
|
- !ruby/object:Gem::Version
|
127
146
|
version: '0'
|
128
147
|
requirements: []
|
129
148
|
rubyforge_project:
|
130
|
-
rubygems_version:
|
149
|
+
rubygems_version: 2.0.3
|
131
150
|
signing_key:
|
132
|
-
specification_version:
|
151
|
+
specification_version: 4
|
133
152
|
summary: A Ruby library to handle HTTP Cookies
|
134
153
|
test_files:
|
135
154
|
- test/helper.rb
|