http-cookie 0.1.0 → 0.1.1
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.
- data/lib/http/cookie.rb +3 -2
- data/lib/http/cookie/version.rb +1 -1
- data/lib/http/cookie_jar.rb +8 -10
- data/lib/http/cookie_jar/abstract_store.rb +11 -11
- data/lib/http/cookie_jar/hash_store.rb +1 -1
- data/test/test_http_cookie.rb +5 -0
- data/test/test_http_cookie_jar.rb +10 -0
- metadata +1 -1
data/lib/http/cookie.rb
CHANGED
@@ -342,6 +342,7 @@ class HTTP::Cookie
|
|
342
342
|
|
343
343
|
def acceptable_from_uri?(uri)
|
344
344
|
uri = URI(uri)
|
345
|
+
return false unless URI::HTTP === uri && uri.host
|
345
346
|
host = DomainName.new(uri.host)
|
346
347
|
|
347
348
|
# RFC 6265 5.3
|
@@ -359,11 +360,11 @@ class HTTP::Cookie
|
|
359
360
|
end
|
360
361
|
|
361
362
|
def valid_for_uri?(uri)
|
362
|
-
uri = URI(uri)
|
363
363
|
if @domain.nil?
|
364
364
|
raise "cannot tell if this cookie is valid because the domain is unknown"
|
365
365
|
end
|
366
|
-
|
366
|
+
uri = URI(uri)
|
367
|
+
return false if secure? && !(URI::HTTPS === uri)
|
367
368
|
acceptable_from_uri?(uri) && HTTP::Cookie.normalize_path(uri.path).start_with?(@path)
|
368
369
|
end
|
369
370
|
|
data/lib/http/cookie/version.rb
CHANGED
data/lib/http/cookie_jar.rb
CHANGED
@@ -67,21 +67,19 @@ class HTTP::CookieJar
|
|
67
67
|
|
68
68
|
# Iterates over all cookies that are not expired.
|
69
69
|
#
|
70
|
-
#
|
71
|
-
#
|
72
|
-
#
|
73
|
-
#
|
74
|
-
# Specify a URI/URL indicating the destination of the cookies
|
75
|
-
# being selected. Every cookie yielded should be good to send to
|
76
|
-
# the given URI, i.e. cookie.valid_for_uri?(uri) evaluates to
|
77
|
-
# true.
|
70
|
+
# An optional argument +uri+ specifies a URI/URL indicating the
|
71
|
+
# destination of the cookies being selected. Every cookie yielded
|
72
|
+
# should be good to send to the given URI,
|
73
|
+
# i.e. cookie.valid_for_uri?(uri) evaluates to true.
|
78
74
|
#
|
79
|
-
#
|
80
|
-
#
|
75
|
+
# If (and only if) the +uri+ option is given, last access time of
|
76
|
+
# each cookie is updated to the current time.
|
81
77
|
def each(uri = nil, &block)
|
82
78
|
block_given? or return enum_for(__method__, uri)
|
83
79
|
|
84
80
|
if uri
|
81
|
+
uri = URI(uri)
|
82
|
+
return self unless URI::HTTP === uri && uri.host
|
85
83
|
block = proc { |cookie|
|
86
84
|
yield cookie if cookie.valid_for_uri?(uri)
|
87
85
|
}
|
@@ -54,23 +54,23 @@ class HTTP::CookieJar::AbstractStore
|
|
54
54
|
|
55
55
|
# Iterates over all cookies that are not expired.
|
56
56
|
#
|
57
|
-
#
|
57
|
+
# An optional argument +uri+ specifies a URI object indicating the
|
58
|
+
# destination of the cookies being selected. Every cookie yielded
|
59
|
+
# should be good to send to the given URI,
|
60
|
+
# i.e. cookie.valid_for_uri?(uri) evaluates to true.
|
58
61
|
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
|
62
|
-
# being selected. Every cookie yielded should be good to send to
|
63
|
-
# the given URI, i.e. cookie.valid_for_uri?(uri) evaluates to
|
64
|
-
# true.
|
65
|
-
#
|
66
|
-
# If (and only if) this option is given, last access time of each
|
67
|
-
# cookie is updated to the current time.
|
68
|
-
def each(options = nil, &block)
|
62
|
+
# If (and only if) the +uri+ option is given, last access time of
|
63
|
+
# each cookie is updated to the current time.
|
64
|
+
def each(uri = nil, &block)
|
69
65
|
raise
|
70
66
|
self
|
71
67
|
end
|
72
68
|
include Enumerable
|
73
69
|
|
70
|
+
def empty?
|
71
|
+
raise
|
72
|
+
end
|
73
|
+
|
74
74
|
def clear
|
75
75
|
raise
|
76
76
|
self
|
@@ -51,7 +51,6 @@ class HTTP::CookieJar
|
|
51
51
|
|
52
52
|
def each(uri = nil)
|
53
53
|
if uri
|
54
|
-
uri = URI(uri)
|
55
54
|
thost = DomainName.new(uri.host)
|
56
55
|
tpath = HTTP::Cookie.normalize_path(uri.path)
|
57
56
|
@jar.each { |domain, paths|
|
@@ -83,6 +82,7 @@ class HTTP::CookieJar
|
|
83
82
|
}
|
84
83
|
}
|
85
84
|
end
|
85
|
+
self
|
86
86
|
end
|
87
87
|
|
88
88
|
def clear
|
data/test/test_http_cookie.rb
CHANGED
@@ -576,6 +576,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
576
576
|
assert_equal false, cookie.valid_for_uri?(URI('http://www.example.com/dir/test.html'))
|
577
577
|
assert_equal false, cookie.valid_for_uri?(URI('https://www.example.com/dir2/test.html'))
|
578
578
|
assert_equal false, cookie.valid_for_uri?(URI('http://www.example.com/dir2/test.html'))
|
579
|
+
assert_equal false, cookie.valid_for_uri?(URI('file:///dir/test.html'))
|
579
580
|
|
580
581
|
cookie = HTTP::Cookie.parse('a=b; path=/dir2/', :origin => URI('http://example.com/dir/file.html')).first
|
581
582
|
assert_equal false, cookie.valid_for_uri?(URI('https://example.com/dir/test.html'))
|
@@ -586,6 +587,7 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
586
587
|
assert_equal false, cookie.valid_for_uri?(URI('http://www.example.com/dir/test.html'))
|
587
588
|
assert_equal false, cookie.valid_for_uri?(URI('https://www.example.com/dir2/test.html'))
|
588
589
|
assert_equal false, cookie.valid_for_uri?(URI('http://www.example.com/dir2/test.html'))
|
590
|
+
assert_equal false, cookie.valid_for_uri?(URI('file:///dir/test.html'))
|
589
591
|
|
590
592
|
cookie = HTTP::Cookie.parse('a=b; domain=example.com; path=/dir2/', :origin => URI('http://example.com/dir/file.html')).first
|
591
593
|
assert_equal false, cookie.valid_for_uri?(URI('https://example.com/dir/test.html'))
|
@@ -596,15 +598,18 @@ class TestHTTPCookie < Test::Unit::TestCase
|
|
596
598
|
assert_equal false, cookie.valid_for_uri?(URI('http://www.example.com/dir/test.html'))
|
597
599
|
assert_equal true, cookie.valid_for_uri?(URI('https://www.example.com/dir2/test.html'))
|
598
600
|
assert_equal true, cookie.valid_for_uri?(URI('http://www.example.com/dir2/test.html'))
|
601
|
+
assert_equal false, cookie.valid_for_uri?(URI('file:///dir2/test.html'))
|
599
602
|
|
600
603
|
cookie = HTTP::Cookie.parse('a=b; secure', :origin => URI('https://example.com/dir/file.html')).first
|
601
604
|
assert_equal true, cookie.valid_for_uri?(URI('https://example.com/dir/test.html'))
|
602
605
|
assert_equal false, cookie.valid_for_uri?(URI('http://example.com/dir/test.html'))
|
603
606
|
assert_equal false, cookie.valid_for_uri?(URI('https://example.com/dir2/test.html'))
|
604
607
|
assert_equal false, cookie.valid_for_uri?(URI('http://example.com/dir2/test.html'))
|
608
|
+
assert_equal false, cookie.valid_for_uri?(URI('file:///dir2/test.html'))
|
605
609
|
|
606
610
|
cookie = HTTP::Cookie.parse('a=b', :origin => URI('https://example.com/')).first
|
607
611
|
assert_equal true, cookie.valid_for_uri?(URI('https://example.com'))
|
612
|
+
assert_equal false, cookie.valid_for_uri?(URI('file:///'))
|
608
613
|
end
|
609
614
|
|
610
615
|
def test_migration
|
@@ -270,6 +270,16 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
270
270
|
assert_equal(0, @jar.cookies(url).length)
|
271
271
|
end
|
272
272
|
|
273
|
+
def test_cookies_no_host
|
274
|
+
url = URI 'file:///path/'
|
275
|
+
|
276
|
+
assert_raises(ArgumentError) {
|
277
|
+
@jar.add(HTTP::Cookie.new(cookie_values(:origin => url)))
|
278
|
+
}
|
279
|
+
|
280
|
+
assert_equal(0, @jar.cookies(url).length)
|
281
|
+
end
|
282
|
+
|
273
283
|
def test_clear
|
274
284
|
url = URI 'http://rubyforge.org/'
|
275
285
|
|