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 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
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - 2.0.0
7
+ - ree
8
+ - jruby-18mode
9
+ - jruby-19mode
10
+ - rbx-18mode
11
+ - rbx-19mode
12
+ matrix:
13
+ allow_failures:
14
+ - rvm: rbx-18mode
15
+ - rvm: rbx-19mode
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 'webrick/httputils'
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
- set_cookie.split(/,(?=[^;,]*=)|,$/).each { |c|
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 = WEBrick::HTTPUtils.dequote(value.strip) if 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'
@@ -1,5 +1,5 @@
1
1
  module HTTP
2
2
  class Cookie
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -23,8 +23,8 @@ class HTTP::CookieJar::CookiestxtSaver < HTTP::CookieJar::AbstractSaver
23
23
 
24
24
  def default_options
25
25
  {
26
- header: "# HTTP Cookie File",
27
- linefeed: "\n",
26
+ :header => "# HTTP Cookie File",
27
+ :linefeed => "\n",
28
28
  }
29
29
  end
30
30
 
@@ -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 cookie_str, :origin => uri do |cookie|
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
- end
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 cookie_str, :origin => uri do |cookie|
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
- end
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 cookie_str, :origin => uri do |cookie|
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
- end
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) { |cookie|
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) { |cookie|
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
- "20/06/95 21:07",
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.tmpdir do |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.4
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-15 00:00:00.000000000 Z
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: 1.8.24
149
+ rubygems_version: 2.0.3
131
150
  signing_key:
132
- specification_version: 3
151
+ specification_version: 4
133
152
  summary: A Ruby library to handle HTTP Cookies
134
153
  test_files:
135
154
  - test/helper.rb