Commit graph

59 commits

Author SHA1 Message Date
Akinori MUSHA
ddf74fee1e Rewrite the Set-Cookie header parser entirely.
The new parser is almost RFC 6265 compliant as the previous
implementation but has some extensions:

- It can parse double-quoted values with unsafe characters inside
  escaped with the backslash.

- It parses a date value of the expires attribute in the way the RFC
  describes, with an exception that it allows omission of the seconds
  field.  Some of the broken date representations that used to pass
  are now treated as error and ignored.

- It can parse a Set-Cookie value that contains multiple cookie
  definitions separated by comma, and commas put inside double quotes
  are not mistaken as definition separator.
2013-03-21 15:52:22 +09:00
Akinori MUSHA
b11aa95025 Initialize secure and httponly with false instead of nil. 2013-03-21 15:49:44 +09:00
Akinori MUSHA
6b6944b324 Add inspect. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
66f37b20dd Rename expire to expire!, to reduce the risk of making a typo. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
f04714741f Add expires_at as alias for expires. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
ae0b3834e7 Make path= accept a string-like. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
59370c79c3 Improve rdoc markups, migrating to Markdown. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
5d0bc5f67d Disallow some more bad characters in name=/value=. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
cc6780a5bc A relative path must be treated as the root path as per RFC 6265 5.1.4. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
28eabedcd3 Use __send__() instead of send(). 2013-03-21 15:46:45 +09:00
Akinori MUSHA
b78271db6d Remove an obsolete part. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
f14c1786cd Make expires and max_age affect each other and drop session=(). 2013-03-21 15:46:45 +09:00
Akinori MUSHA
1c7b660c85 Improve comments. 2013-03-21 15:46:45 +09:00
Akinori MUSHA
7d81c10914 A cookie value may be DQUOTE'd as per RFC 6265 2.2.
Escaping with the backslash character is not mentioned in the RFC but
the backslash character is not allowed here anyway, so just be nice
and support it for legacy applications.
2013-03-21 15:46:45 +09:00
Akinori MUSHA
1a7c38e9e0 Apply minor code improvements. 2013-03-18 00:40:47 +09:00
Akinori MUSHA
c389a52e2c Drop dependency on WEBrick::HTTPUtils. 2013-03-18 00:09:01 +09:00
Akinori MUSHA
3e61ef78a2 Require 'uri'. 2013-03-17 23:56:58 +09:00
Akinori MUSHA
c6d28de9b7 Improve documentation. 2013-03-15 19:22:39 +09:00
Akinori MUSHA
15f960bfbd Reduce warnings. 2013-03-15 12:31:19 +09:00
Akinori MUSHA
236f3af719 Extend URI() globally. URI() is like everywhere by now. 2013-03-15 12:08:45 +09:00
Akinori MUSHA
b86690cb21 Check if the scheme is http(s) and the host is non-nil in URI. 2013-03-15 11:21:57 +09:00
Akinori MUSHA
c0d5f3a121 Add error messages to make migration from Mechanize::Cookie easier.
Add a section to elaborate on the incompatibilities to README.md.
2013-03-15 05:53:11 +09:00
Akinori MUSHA
8d8f01fa81 Cap the numbers of cookies per domain and cookies total, respectively.
This is implemented in HashStore#cleanup(), which is automatically
called by #add() after every 150 updates.
2013-03-15 04:20:59 +09:00
Akinori MUSHA
d004408296 Introduce an abstraction layer for the cookie store.
CookieJar#jar is removed and #store is added instead.
2013-03-15 04:20:59 +09:00
Akinori MUSHA
1f5eb6bc7f Introduce an abstraction layer for saving (serializing) CookieJar.
CookieJar#save is the new name for the now obsolete #save_as.

CookieJar#save and #load now accept IO-like instead of a filename.

Change the YAML file format, and make #load discard incompatible data.
2013-03-15 04:20:59 +09:00
Akinori MUSHA
a831fc424c Add HTTP::Cookie#set_cookie_value, and alias #cookie_value to #to_s. 2013-03-15 04:20:59 +09:00
Akinori MUSHA
1fcf008cf0 Make HTTP::Cookie#expired? optionally take a time. 2013-03-15 04:20:59 +09:00
Akinori MUSHA
d8be652a92 Add HTTP::Cookie#expire. 2013-03-15 04:20:58 +09:00
Akinori MUSHA
91193dace3 Fix saving in the cookies.txt format. Expires values were broken.
Remove duplicate and incomplete tests.
2013-03-15 04:20:58 +09:00
Akinori MUSHA
84d375e3b7 Make HTTP::Cookie.parse() reject cookies longer than 4096 bytes.
This limit is defined as HTTP::Cookie::MAX_LENGTH.
2013-03-15 04:20:58 +09:00
Akinori MUSHA
10e9ca5c60 Add HTTP::Cookie#session? as an alias for #session. 2013-03-15 04:20:58 +09:00
Akinori MUSHA
9d842404e3 Fix <=> so that two cookies of different values are not equal. 2013-03-12 18:32:18 +09:00
Akinori MUSHA
7554bffb32 Allow passing a base time to HTTP::Cookie.parse() via :date. 2013-03-12 18:32:18 +09:00
Akinori MUSHA
6d8fb94f83 Add support for the HttpOnly attribute.
New methods are added to HTTP::Cookie: httponly?, httponly=
2013-03-12 18:32:18 +09:00
Akinori MUSHA
b05008d996 Always initialize @origin to suppress warning. 2013-03-08 21:31:11 +09:00
Akinori MUSHA
3ec9dc3200 Reduce warnings from the interpreter. (method redefinition) 2013-03-08 21:31:11 +09:00
Akinori MUSHA
82deac2f19 HTTP::Cookie#origin=: Acceptability check must be performed after setting the domain and path. 2012-10-22 14:50:13 +09:00
Akinori MUSHA
fa45e028a7 Treat an empty path as '/'.
HTTP::CookieJar#cookies: Do not modify a given URI.  Remove a
redundant cleanup() call.
2012-10-22 14:21:46 +09:00
Akinori MUSHA
a47a849387 Define HTTP::Cookie#name= with validation. 2012-10-22 03:52:25 +09:00
Akinori MUSHA
e18013e25e Each record in cookies.txt must have seven columns at most. 2012-10-22 03:51:10 +09:00
Akinori MUSHA
c727d39076 Move cookies.txt parser and serializer from HTTP::CookieJar to HTTP::Cookie.
Fix a bug where anything after '#' in cookies.txt are removed.
2012-10-22 03:30:01 +09:00
Akinori MUSHA
d2f31d90b5 HTTP::Cookie.new: Delay setting of origin. 2012-10-22 02:20:43 +09:00
Akinori MUSHA
ae4a9d8d40 Make HTTP::Cookie Comparable. 2012-10-22 01:02:00 +09:00
Akinori MUSHA
d59a0ee5ca Define a custom YAML encoder and decoder.
Drop support for deserializing YAML made with Mechanize <2.1.
2012-10-22 01:02:00 +09:00
Akinori MUSHA
fe65dbfb89 Add HTTP::Cookie#domain_name. 2012-10-21 23:48:21 +09:00
Akinori MUSHA
232906e0c3 Remove obsolete instance variables. 2012-10-22 01:01:59 +09:00
Akinori MUSHA
39d6965ed9 Use String.try_convert if available. 2012-10-21 19:12:13 +09:00
Akinori MUSHA
dd3ca9a0f1 Inhibit a domain-less cookie from being used for checking validity. 2012-10-18 19:00:33 +09:00
Akinori MUSHA
c3e4fae60c Refer to the instance variable @domain instead of the accessor. 2012-10-18 18:59:37 +09:00
Akinori MUSHA
75f7ee6505 Make valid_for_uri? and acceptable_from_uri? accept a URL string also. 2012-10-18 18:57:46 +09:00