http-cookie 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -70,12 +70,12 @@ equivalent using `HTTP::Cookie`:
70
70
  - `Mechanize::Cookie.parse`
71
71
 
72
72
  # before
73
- cookie1 = Mechanize::Cookie.parse(uri, set_cookie1)
74
- cookie2 = Mechanize::Cookie.parse(uri, set_cookie2, log)
73
+ cookies1 = Mechanize::Cookie.parse(uri, set_cookie1)
74
+ cookies2 = Mechanize::Cookie.parse(uri, set_cookie2, log)
75
75
 
76
76
  # after
77
- cookie1 = HTTP::Cookie.parse(set_cookie1, :origin => uri)
78
- cookie2 = HTTP::Cookie.parse(set_cookie2, :origin => uri, :logger => log)
77
+ cookies1 = HTTP::Cookie.parse(set_cookie1, :origin => uri)
78
+ cookies2 = HTTP::Cookie.parse(set_cookie2, :origin => uri, :logger => log)
79
79
 
80
80
  - `Mechanize::Cookie#set_domain`
81
81
 
@@ -1,5 +1,5 @@
1
1
  module HTTP
2
2
  class Cookie
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.4"
4
4
  end
5
5
  end
data/lib/http/cookie.rb CHANGED
@@ -72,6 +72,10 @@ class HTTP::Cookie
72
72
  # is called if defined. Each key can be either a symbol or a
73
73
  # string, downcased or not.
74
74
  #
75
+ # This methods accepts any attribute name for which a setter method
76
+ # is defined. Beware, however, any error (typically ArgumentError)
77
+ # a setter method raises will be passed through.
78
+ #
75
79
  # e.g.
76
80
  # new("uid", "a12345")
77
81
  # new("uid", "a12345", :domain => 'example.org',
@@ -149,7 +153,9 @@ class HTTP::Cookie
149
153
 
150
154
  # Parses a Set-Cookie header value +set_cookie+ into an array of
151
155
  # Cookie objects. Parts (separated by commas) that are malformed
152
- # are ignored.
156
+ # or invalid are silently ignored. For example, a cookie that a
157
+ # given origin is not allowed to issue is not included in the
158
+ # resulted array.
153
159
  #
154
160
  # If a block is given, each cookie object is passed to the block.
155
161
  #
@@ -301,10 +307,13 @@ class HTTP::Cookie
301
307
  raise NoMethodError, 'HTTP::Cookie equivalent for Mechanize::CookieJar#set_domain() is #domain=().'
302
308
  end
303
309
 
310
+ # Sets the path attribute.
304
311
  def path=(path)
305
312
  @path = HTTP::Cookie.normalize_path(path)
306
313
  end
307
314
 
315
+ # Sets the origin of the cookie. This initializes the `domain` and
316
+ # `path` attribute values if unknown yet.
308
317
  def origin=(origin)
309
318
  @origin.nil? or
310
319
  raise ArgumentError, "origin cannot be changed once it is set"
@@ -316,6 +325,8 @@ class HTTP::Cookie
316
325
  @origin = origin
317
326
  end
318
327
 
328
+ # Sets the expires attribute. A `Time` object, a string
329
+ # representation of date/time, and `nil` are good values to set.
319
330
  def expires=(t)
320
331
  case t
321
332
  when nil, Time
@@ -325,11 +336,14 @@ class HTTP::Cookie
325
336
  end
326
337
  end
327
338
 
339
+ # Tests if this cookie is expired by now, or by a given time.
328
340
  def expired?(time = Time.now)
329
341
  return false unless @expires
330
342
  time > @expires
331
343
  end
332
344
 
345
+ # Expires this cookie by setting the expires attribute value to a
346
+ # past date.
333
347
  def expire
334
348
  @expires = UNIX_EPOCH
335
349
  self
@@ -339,6 +353,8 @@ class HTTP::Cookie
339
353
  alias httponly? httponly
340
354
  alias session? session
341
355
 
356
+ # Tests if it is OK to accept this cookie if it is sent from a given
357
+ # +uri.
342
358
  def acceptable_from_uri?(uri)
343
359
  uri = URI(uri)
344
360
  return false unless URI::HTTP === uri && uri.host
@@ -358,6 +374,8 @@ class HTTP::Cookie
358
374
  end
359
375
  end
360
376
 
377
+ # Tests if it is OK to send this cookie to a given +uri+, A runtime
378
+ # error is raised if the cookie's domain is unknown.
361
379
  def valid_for_uri?(uri)
362
380
  if @domain.nil?
363
381
  raise "cannot tell if this cookie is valid because the domain is unknown"
@@ -391,16 +409,16 @@ class HTTP::Cookie
391
409
  if (HTTP::Cookie.normalize_path(origin) + './').path != @path
392
410
  string << "; path=#{@path}"
393
411
  end
394
- if expires = @expires
412
+ if @expires
395
413
  string << "; expires=#{@expires.httpdate}"
396
414
  end
397
- if comment = @comment
415
+ if @comment
398
416
  string << "; comment=#{@comment}"
399
417
  end
400
- if httponly?
418
+ if @httponly
401
419
  string << "; HttpOnly"
402
420
  end
403
- if secure?
421
+ if @secure
404
422
  string << "; secure"
405
423
  end
406
424
  string
@@ -1,5 +1,3 @@
1
- require 'http/cookie_jar'
2
-
3
1
  class HTTP::CookieJar::AbstractSaver
4
2
  class << self
5
3
  @@class_map = {}
@@ -13,7 +11,7 @@ class HTTP::CookieJar::AbstractSaver
13
11
  begin
14
12
  require 'http/cookie_jar/%s_saver' % symbol
15
13
  @@class_map.fetch(symbol)
16
- rescue LoadError, IndexError => e
14
+ rescue LoadError, IndexError
17
15
  raise IndexError, 'cookie saver unavailable: %s' % symbol.inspect
18
16
  end
19
17
  end
@@ -1,5 +1,3 @@
1
- require 'http/cookie_jar'
2
-
3
1
  class HTTP::CookieJar::AbstractStore
4
2
  class << self
5
3
  @@class_map = {}
@@ -13,7 +11,7 @@ class HTTP::CookieJar::AbstractStore
13
11
  begin
14
12
  require 'http/cookie_jar/%s_store' % symbol
15
13
  @@class_map.fetch(symbol)
16
- rescue LoadError, IndexError => e
14
+ rescue LoadError, IndexError
17
15
  raise IndexError, 'cookie store unavailable: %s' % symbol.inspect
18
16
  end
19
17
  end
@@ -1,8 +1,5 @@
1
1
  require 'http/cookie_jar'
2
- begin
3
- require 'psych'
4
- rescue LoadError
5
- end
2
+ require 'psych' if !defined?(YAML) && RUBY_VERSION == "1.9.2"
6
3
  require 'yaml'
7
4
 
8
5
  # YAMLSaver saves and loads cookies in the YAML format.
@@ -10,6 +10,9 @@ class HTTP::CookieJar
10
10
 
11
11
  attr_reader :store
12
12
 
13
+ # Generates a new cookie jar. The default store class is `:hash`,
14
+ # which maps to `HTTP::CookieJar::HashStore`. Any given options are
15
+ # passed through to the initializer of the specified store class.
13
16
  def initialize(store = :hash, options = nil)
14
17
  case store
15
18
  when Symbol
@@ -27,7 +30,9 @@ class HTTP::CookieJar
27
30
  @store = other.instance_eval { @store.dup }
28
31
  end
29
32
 
30
- # Add a +cookie+ to the jar and return self.
33
+ # Adds a +cookie+ to the jar and return self. If a given cookie has
34
+ # no domain or path attribute values and the origin is unknown,
35
+ # ArgumentError is raised.
31
36
  def add(cookie, *_)
32
37
  _.empty? or
33
38
  raise ArgumentError, 'HTTP::Cookie equivalent for Mechanize::CookieJar#add(uri, cookie) is #add(cookie) after setting cookie.origin = uri.'
@@ -46,7 +51,7 @@ class HTTP::CookieJar
46
51
  raise NoMethodError, 'HTTP::Cookie equivalent for Mechanize::CookieJar#add!() is #add().'
47
52
  end
48
53
 
49
- # Fetch the cookies that should be used for the URL/URI.
54
+ # Gets an array of cookies that should be sent for the URL/URI.
50
55
  def cookies(url)
51
56
  now = Time.now
52
57
  each(url).select { |cookie|
@@ -54,8 +59,8 @@ class HTTP::CookieJar
54
59
  }.sort
55
60
  end
56
61
 
57
- # Tests if the jar is empty. If url is given, tests if there is no
58
- # cookie for the URL.
62
+ # Tests if the jar is empty. If +url+ is given, tests if there is
63
+ # no cookie for the URL.
59
64
  def empty?(url = nil)
60
65
  if url
61
66
  each(url) { return false }
@@ -94,9 +99,9 @@ class HTTP::CookieJar
94
99
  # jar.save(filename_or_io, **options)
95
100
  # jar.save(filename_or_io, format = :yaml, **options)
96
101
  #
97
- # Save the cookie jar into a file or an IO in the format specified
98
- # and return self. If the given object responds to #write it is
99
- # taken as an IO, or taken as a filename otherwise.
102
+ # Saves the cookie jar into a file or an IO in the format specified
103
+ # and return self. If a given object responds to #write it is taken
104
+ # as an IO, or taken as a filename otherwise.
100
105
  #
101
106
  # Available option keywords are below:
102
107
  #
@@ -160,9 +165,9 @@ class HTTP::CookieJar
160
165
  # jar.load(filename_or_io, **options)
161
166
  # jar.load(filename_or_io, format = :yaml, **options)
162
167
  #
163
- # Load cookies recorded in a file or an IO in the format specified
164
- # into the jar and return self. If the given object responds to
165
- # #read it is taken as an IO, or taken as a filename otherwise.
168
+ # Loads cookies recorded in a file or an IO in the format specified
169
+ # into the jar and return self. If a given object responds to #read
170
+ # it is taken as an IO, or taken as a filename otherwise.
166
171
  #
167
172
  # Available option keywords are below:
168
173
  #
@@ -212,7 +217,7 @@ class HTTP::CookieJar
212
217
  self
213
218
  end
214
219
 
215
- # Clear the cookie jar and return self.
220
+ # Clears the cookie jar and return self.
216
221
  def clear
217
222
  @store.clear
218
223
  self
@@ -223,7 +228,7 @@ class HTTP::CookieJar
223
228
  raise NoMethodError, 'HTTP::Cookie equivalent for Mechanize::CookieJar#clear!() is #clear().'
224
229
  end
225
230
 
226
- # Remove expired cookies and return self.
231
+ # Removes expired cookies and return self.
227
232
  def cleanup(session = false)
228
233
  @store.cleanup session
229
234
  self
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-cookie
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: