http-cookie 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +3 -9
- data/lib/http/cookie.rb +11 -12
- data/lib/http/cookie/version.rb +1 -1
- data/lib/http/cookie_jar.rb +4 -4
- data/lib/http/cookie_jar/abstract_saver.rb +4 -4
- data/lib/http/cookie_jar/abstract_store.rb +4 -4
- data/test/test_http_cookie_jar.rb +13 -21
- metadata +1 -1
data/Rakefile
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
require 'rake/testtask'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
Rake::TestTask
|
6
|
-
else
|
7
|
-
require 'rcov/rcovtask'
|
8
|
-
Rcov::RcovTask
|
9
|
-
end.new(:test) do |test|
|
10
|
-
test.libs << 'lib' << 'test'
|
11
|
-
test.ruby_opts << '-r./test/simplecov_start.rb' if !defined?(Rcov)
|
4
|
+
Rake::TestTask.new(:test) do |test|
|
5
|
+
test.ruby_opts << '-r./test/simplecov_start.rb' if defined?(SimbleCov)
|
12
6
|
test.pattern = 'test/**/test_*.rb'
|
13
7
|
test.verbose = true
|
14
8
|
end
|
data/lib/http/cookie.rb
CHANGED
@@ -7,6 +7,17 @@ module HTTP
|
|
7
7
|
autoload :CookieJar, 'http/cookie_jar'
|
8
8
|
end
|
9
9
|
|
10
|
+
# In Ruby < 1.9.3 URI() does not accept an URI object.
|
11
|
+
if RUBY_VERSION < "1.9.3"
|
12
|
+
begin
|
13
|
+
URI(URI(''))
|
14
|
+
rescue
|
15
|
+
def URI(url)
|
16
|
+
url.is_a?(URI) ? url : URI.parse(url)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
10
21
|
# This class is used to represent an HTTP Cookie.
|
11
22
|
class HTTP::Cookie
|
12
23
|
# Maximum number of bytes per cookie (RFC 6265 6.1 requires 4096 at least)
|
@@ -25,16 +36,6 @@ class HTTP::Cookie
|
|
25
36
|
expires created_at accessed_at
|
26
37
|
]
|
27
38
|
|
28
|
-
# In Ruby < 1.9.3 URI() does not accept an URI object.
|
29
|
-
if RUBY_VERSION < "1.9.3"
|
30
|
-
module URIFix
|
31
|
-
def URI(url)
|
32
|
-
url.is_a?(URI) ? url : Kernel::URI(url)
|
33
|
-
end
|
34
|
-
private :URI
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
39
|
if String.respond_to?(:try_convert)
|
39
40
|
def check_string_type(object)
|
40
41
|
String.try_convert(object)
|
@@ -52,8 +53,6 @@ class HTTP::Cookie
|
|
52
53
|
private :check_string_type
|
53
54
|
end
|
54
55
|
|
55
|
-
include URIFix if defined?(URIFix)
|
56
|
-
|
57
56
|
attr_reader :name, :domain, :path, :origin
|
58
57
|
attr_accessor :secure, :httponly, :value, :version
|
59
58
|
attr_reader :domain_name, :expires
|
data/lib/http/cookie/version.rb
CHANGED
data/lib/http/cookie_jar.rb
CHANGED
@@ -5,8 +5,8 @@ require 'http/cookie'
|
|
5
5
|
# any particular website.
|
6
6
|
|
7
7
|
class HTTP::CookieJar
|
8
|
-
|
9
|
-
|
8
|
+
require 'http/cookie_jar/abstract_store'
|
9
|
+
require 'http/cookie_jar/abstract_saver'
|
10
10
|
|
11
11
|
attr_reader :store
|
12
12
|
|
@@ -136,7 +136,7 @@ class HTTP::CookieJar
|
|
136
136
|
|
137
137
|
begin
|
138
138
|
saver = AbstractSaver.implementation(opthash[:format]).new(opthash)
|
139
|
-
rescue
|
139
|
+
rescue IndexError => e
|
140
140
|
raise ArgumentError, e.message
|
141
141
|
end
|
142
142
|
|
@@ -197,7 +197,7 @@ class HTTP::CookieJar
|
|
197
197
|
|
198
198
|
begin
|
199
199
|
saver = AbstractSaver.implementation(opthash[:format]).new(opthash)
|
200
|
-
rescue
|
200
|
+
rescue IndexError => e
|
201
201
|
raise ArgumentError, e.message
|
202
202
|
end
|
203
203
|
|
@@ -6,15 +6,15 @@ class HTTP::CookieJar::AbstractSaver
|
|
6
6
|
|
7
7
|
# Gets an implementation class by the name, optionally trying to
|
8
8
|
# load "http/cookie_jar/*_saver" if not found. If loading fails,
|
9
|
-
#
|
9
|
+
# IndexError is raised.
|
10
10
|
def implementation(symbol)
|
11
11
|
@@class_map.fetch(symbol)
|
12
|
-
rescue
|
12
|
+
rescue IndexError
|
13
13
|
begin
|
14
14
|
require 'http/cookie_jar/%s_saver' % symbol
|
15
15
|
@@class_map.fetch(symbol)
|
16
|
-
rescue LoadError,
|
17
|
-
raise
|
16
|
+
rescue LoadError, IndexError => e
|
17
|
+
raise IndexError, 'cookie saver unavailable: %s' % symbol.inspect
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -6,15 +6,15 @@ class HTTP::CookieJar::AbstractStore
|
|
6
6
|
|
7
7
|
# Gets an implementation class by the name, optionally trying to
|
8
8
|
# load "http/cookie_jar/*_store" if not found. If loading fails,
|
9
|
-
#
|
9
|
+
# IndexError is raised.
|
10
10
|
def implementation(symbol)
|
11
11
|
@@class_map.fetch(symbol)
|
12
|
-
rescue
|
12
|
+
rescue IndexError
|
13
13
|
begin
|
14
14
|
require 'http/cookie_jar/%s_store' % symbol
|
15
15
|
@@class_map.fetch(symbol)
|
16
|
-
rescue LoadError,
|
17
|
-
raise
|
16
|
+
rescue LoadError, IndexError => e
|
17
|
+
raise IndexError, 'cookie store unavailable: %s' % symbol.inspect
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -5,14 +5,6 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
5
5
|
@jar = HTTP::CookieJar.new
|
6
6
|
end
|
7
7
|
|
8
|
-
def in_tmpdir
|
9
|
-
Dir.mktmpdir do |dir|
|
10
|
-
Dir.chdir dir do
|
11
|
-
yield
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
8
|
def cookie_values(options = {})
|
17
9
|
{
|
18
10
|
:name => 'Foo',
|
@@ -310,12 +302,12 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
310
302
|
|
311
303
|
assert_equal(3, @jar.cookies(url).length)
|
312
304
|
|
313
|
-
|
314
|
-
value = @jar.save("cookies.yml")
|
305
|
+
Dir.mktmpdir do |dir|
|
306
|
+
value = @jar.save(File.join(dir, "cookies.yml"))
|
315
307
|
assert_same @jar, value
|
316
308
|
|
317
309
|
jar = HTTP::CookieJar.new
|
318
|
-
jar.load("cookies.yml")
|
310
|
+
jar.load(File.join(dir, "cookies.yml"))
|
319
311
|
cookies = jar.cookies(url).sort_by { |cookie| cookie.name }
|
320
312
|
assert_equal(2, cookies.length)
|
321
313
|
assert_equal('Baz', cookies[0].name)
|
@@ -342,11 +334,11 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
342
334
|
|
343
335
|
assert_equal(3, @jar.cookies(url).length)
|
344
336
|
|
345
|
-
|
346
|
-
@jar.save("cookies.yml", :format => :yaml, :session => true)
|
337
|
+
Dir.mktmpdir do |dir|
|
338
|
+
@jar.save(File.join(dir, "cookies.yml"), :format => :yaml, :session => true)
|
347
339
|
|
348
340
|
jar = HTTP::CookieJar.new
|
349
|
-
jar.load("cookies.yml")
|
341
|
+
jar.load(File.join(dir, "cookies.yml"))
|
350
342
|
assert_equal(3, jar.cookies(url).length)
|
351
343
|
end
|
352
344
|
|
@@ -374,11 +366,11 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
374
366
|
|
375
367
|
assert_equal(3, @jar.cookies(url).length)
|
376
368
|
|
377
|
-
|
378
|
-
@jar.save("cookies.txt", :cookiestxt)
|
369
|
+
Dir.tmpdir do |dir|
|
370
|
+
@jar.save(File.join(dir, "cookies.txt"), :cookiestxt)
|
379
371
|
|
380
372
|
jar = HTTP::CookieJar.new
|
381
|
-
jar.load("cookies.txt", :cookiestxt) # HACK test the format
|
373
|
+
jar.load(File.join(dir, "cookies.txt"), :cookiestxt) # HACK test the format
|
382
374
|
cookies = jar.cookies(url)
|
383
375
|
assert_equal(2, cookies.length)
|
384
376
|
cookies.each { |cookie|
|
@@ -533,7 +525,7 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
533
525
|
:domain => uri.host,
|
534
526
|
:for_domain => true,
|
535
527
|
:path => '/dir%d/' % (i / 2),
|
536
|
-
:origin => uri
|
528
|
+
:origin => uri
|
537
529
|
)).tap { |cookie|
|
538
530
|
cookie.created_at = i == 42 ? date - i : date
|
539
531
|
}
|
@@ -543,8 +535,8 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
543
535
|
count = jar.to_a.size
|
544
536
|
assert_equal limit_per_domain, count
|
545
537
|
assert_equal [*1..41] + [*43..(limit_per_domain + 1)], jar.map { |cookie|
|
546
|
-
cookie.name[/(
|
547
|
-
}
|
538
|
+
cookie.name[/(\d+)$/].to_i
|
539
|
+
}.sort
|
548
540
|
|
549
541
|
hlimit = HTTP::Cookie::MAX_COOKIES_TOTAL
|
550
542
|
slimit = hlimit + HTTP::CookieJar::HashStore::GC_THRESHOLD
|
@@ -560,7 +552,7 @@ class TestHTTPCookieJar < Test::Unit::TestCase
|
|
560
552
|
:domain => uri.host,
|
561
553
|
:for_domain => true,
|
562
554
|
:path => '/dir%d/' % (i / 2),
|
563
|
-
:origin => uri
|
555
|
+
:origin => uri
|
564
556
|
)).tap { |cookie|
|
565
557
|
cookie.created_at = i == j ? date - i : date
|
566
558
|
}
|