mechanize 2.7.6 → 2.12.2

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.
Files changed (157) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +11 -0
  3. data/.github/workflows/ci.yml +43 -0
  4. data/.github/workflows/upstream.yml +51 -0
  5. data/.yardopts +8 -0
  6. data/{CHANGELOG.rdoc → CHANGELOG.md} +221 -96
  7. data/EXAMPLES.rdoc +1 -24
  8. data/Gemfile +10 -4
  9. data/{LICENSE.rdoc → LICENSE.txt} +4 -0
  10. data/README.md +77 -0
  11. data/Rakefile +18 -3
  12. data/examples/latest_user_agents.rb +100 -0
  13. data/examples/rubygems.rb +2 -2
  14. data/examples/wikipedia_links_to_philosophy.rb +5 -6
  15. data/lib/mechanize/chunked_termination_error.rb +1 -0
  16. data/lib/mechanize/content_type_error.rb +1 -0
  17. data/lib/mechanize/cookie.rb +3 -15
  18. data/lib/mechanize/cookie_jar.rb +13 -9
  19. data/lib/mechanize/directory_saver.rb +1 -0
  20. data/lib/mechanize/download.rb +2 -1
  21. data/lib/mechanize/element_matcher.rb +1 -0
  22. data/lib/mechanize/element_not_found_error.rb +1 -0
  23. data/lib/mechanize/file.rb +2 -1
  24. data/lib/mechanize/file_connection.rb +5 -3
  25. data/lib/mechanize/file_request.rb +1 -0
  26. data/lib/mechanize/file_response.rb +4 -1
  27. data/lib/mechanize/file_saver.rb +1 -0
  28. data/lib/mechanize/form/button.rb +1 -0
  29. data/lib/mechanize/form/check_box.rb +1 -0
  30. data/lib/mechanize/form/field.rb +1 -0
  31. data/lib/mechanize/form/file_upload.rb +1 -0
  32. data/lib/mechanize/form/hidden.rb +1 -0
  33. data/lib/mechanize/form/image_button.rb +1 -0
  34. data/lib/mechanize/form/keygen.rb +1 -0
  35. data/lib/mechanize/form/multi_select_list.rb +2 -1
  36. data/lib/mechanize/form/option.rb +1 -0
  37. data/lib/mechanize/form/radio_button.rb +1 -0
  38. data/lib/mechanize/form/reset.rb +1 -0
  39. data/lib/mechanize/form/select_list.rb +1 -0
  40. data/lib/mechanize/form/submit.rb +1 -0
  41. data/lib/mechanize/form/text.rb +1 -0
  42. data/lib/mechanize/form/textarea.rb +1 -0
  43. data/lib/mechanize/form.rb +5 -13
  44. data/lib/mechanize/headers.rb +1 -0
  45. data/lib/mechanize/history.rb +1 -0
  46. data/lib/mechanize/http/agent.rb +83 -10
  47. data/lib/mechanize/http/auth_challenge.rb +1 -0
  48. data/lib/mechanize/http/auth_realm.rb +1 -0
  49. data/lib/mechanize/http/auth_store.rb +1 -0
  50. data/lib/mechanize/http/content_disposition_parser.rb +15 -4
  51. data/lib/mechanize/http/www_authenticate_parser.rb +3 -3
  52. data/lib/mechanize/http.rb +1 -0
  53. data/lib/mechanize/image.rb +1 -0
  54. data/lib/mechanize/page/base.rb +1 -0
  55. data/lib/mechanize/page/frame.rb +1 -0
  56. data/lib/mechanize/page/image.rb +1 -0
  57. data/lib/mechanize/page/label.rb +1 -0
  58. data/lib/mechanize/page/link.rb +8 -1
  59. data/lib/mechanize/page/meta_refresh.rb +1 -0
  60. data/lib/mechanize/page.rb +6 -8
  61. data/lib/mechanize/parser.rb +1 -0
  62. data/lib/mechanize/pluggable_parsers.rb +2 -1
  63. data/lib/mechanize/prependable.rb +1 -0
  64. data/lib/mechanize/redirect_limit_reached_error.rb +1 -0
  65. data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -0
  66. data/lib/mechanize/response_code_error.rb +2 -1
  67. data/lib/mechanize/response_read_error.rb +1 -0
  68. data/lib/mechanize/robots_disallowed_error.rb +1 -0
  69. data/lib/mechanize/test_case/bad_chunking_servlet.rb +1 -0
  70. data/lib/mechanize/test_case/basic_auth_servlet.rb +1 -0
  71. data/lib/mechanize/test_case/content_type_servlet.rb +1 -0
  72. data/lib/mechanize/test_case/digest_auth_servlet.rb +1 -0
  73. data/lib/mechanize/test_case/file_upload_servlet.rb +1 -0
  74. data/lib/mechanize/test_case/form_servlet.rb +1 -0
  75. data/lib/mechanize/test_case/gzip_servlet.rb +4 -3
  76. data/lib/mechanize/test_case/header_servlet.rb +1 -0
  77. data/lib/mechanize/test_case/http_refresh_servlet.rb +1 -0
  78. data/lib/mechanize/test_case/infinite_redirect_servlet.rb +1 -0
  79. data/lib/mechanize/test_case/infinite_refresh_servlet.rb +1 -0
  80. data/lib/mechanize/test_case/many_cookies_as_string_servlet.rb +1 -0
  81. data/lib/mechanize/test_case/many_cookies_servlet.rb +1 -0
  82. data/lib/mechanize/test_case/modified_since_servlet.rb +1 -0
  83. data/lib/mechanize/test_case/ntlm_servlet.rb +1 -0
  84. data/lib/mechanize/test_case/one_cookie_no_spaces_servlet.rb +1 -0
  85. data/lib/mechanize/test_case/one_cookie_servlet.rb +1 -0
  86. data/lib/mechanize/test_case/quoted_value_cookie_servlet.rb +1 -0
  87. data/lib/mechanize/test_case/redirect_servlet.rb +1 -0
  88. data/lib/mechanize/test_case/referer_servlet.rb +1 -0
  89. data/lib/mechanize/test_case/refresh_with_empty_url.rb +1 -0
  90. data/lib/mechanize/test_case/refresh_without_url.rb +1 -0
  91. data/lib/mechanize/test_case/response_code_servlet.rb +1 -0
  92. data/lib/mechanize/test_case/robots_txt_servlet.rb +1 -0
  93. data/lib/mechanize/test_case/send_cookies_servlet.rb +1 -0
  94. data/lib/mechanize/test_case/server.rb +1 -0
  95. data/lib/mechanize/test_case/servlets.rb +1 -0
  96. data/lib/mechanize/test_case/verb_servlet.rb +5 -6
  97. data/lib/mechanize/test_case.rb +34 -34
  98. data/lib/mechanize/unauthorized_error.rb +1 -0
  99. data/lib/mechanize/unsupported_scheme_error.rb +1 -0
  100. data/lib/mechanize/util.rb +2 -1
  101. data/lib/mechanize/version.rb +2 -1
  102. data/lib/mechanize/xml_file.rb +1 -0
  103. data/lib/mechanize.rb +56 -37
  104. data/mechanize.gemspec +43 -35
  105. data/test/htdocs/dir with spaces/foo.html +1 -0
  106. data/test/htdocs/tc_links.html +1 -1
  107. data/test/test_mechanize.rb +21 -8
  108. data/test/test_mechanize_cookie.rb +38 -26
  109. data/test/test_mechanize_cookie_jar.rb +87 -54
  110. data/test/test_mechanize_directory_saver.rb +1 -0
  111. data/test/test_mechanize_download.rb +14 -1
  112. data/test/test_mechanize_element_not_found_error.rb +1 -0
  113. data/test/test_mechanize_file.rb +11 -0
  114. data/test/test_mechanize_file_connection.rb +23 -4
  115. data/test/test_mechanize_file_request.rb +1 -0
  116. data/test/test_mechanize_file_response.rb +26 -1
  117. data/test/test_mechanize_file_saver.rb +1 -0
  118. data/test/test_mechanize_form.rb +14 -1
  119. data/test/test_mechanize_form_check_box.rb +1 -0
  120. data/test/test_mechanize_form_encoding.rb +2 -1
  121. data/test/test_mechanize_form_field.rb +1 -0
  122. data/test/test_mechanize_form_file_upload.rb +1 -0
  123. data/test/test_mechanize_form_image_button.rb +1 -0
  124. data/test/test_mechanize_form_keygen.rb +2 -0
  125. data/test/test_mechanize_form_multi_select_list.rb +1 -0
  126. data/test/test_mechanize_form_option.rb +1 -0
  127. data/test/test_mechanize_form_radio_button.rb +1 -0
  128. data/test/test_mechanize_form_select_list.rb +1 -0
  129. data/test/test_mechanize_form_textarea.rb +1 -0
  130. data/test/test_mechanize_headers.rb +1 -0
  131. data/test/test_mechanize_history.rb +1 -0
  132. data/test/test_mechanize_http_agent.rb +187 -26
  133. data/test/test_mechanize_http_auth_challenge.rb +1 -0
  134. data/test/test_mechanize_http_auth_realm.rb +1 -0
  135. data/test/test_mechanize_http_auth_store.rb +1 -0
  136. data/test/test_mechanize_http_content_disposition_parser.rb +28 -0
  137. data/test/test_mechanize_http_www_authenticate_parser.rb +1 -0
  138. data/test/test_mechanize_image.rb +1 -0
  139. data/test/test_mechanize_link.rb +25 -0
  140. data/test/test_mechanize_page.rb +15 -0
  141. data/test/test_mechanize_page_encoding.rb +33 -5
  142. data/test/test_mechanize_page_frame.rb +1 -0
  143. data/test/test_mechanize_page_image.rb +1 -0
  144. data/test/test_mechanize_page_link.rb +27 -23
  145. data/test/test_mechanize_page_meta_refresh.rb +1 -0
  146. data/test/test_mechanize_parser.rb +1 -0
  147. data/test/test_mechanize_pluggable_parser.rb +1 -0
  148. data/test/test_mechanize_redirect_limit_reached_error.rb +1 -0
  149. data/test/test_mechanize_redirect_not_get_or_head_error.rb +1 -0
  150. data/test/test_mechanize_response_read_error.rb +1 -0
  151. data/test/test_mechanize_subclass.rb +1 -0
  152. data/test/test_mechanize_util.rb +4 -3
  153. data/test/test_mechanize_xml_file.rb +1 -0
  154. data/test/test_multi_select.rb +1 -0
  155. metadata +106 -86
  156. data/.travis.yml +0 -36
  157. data/README.rdoc +0 -77
@@ -1,6 +1,142 @@
1
- = Mechanize CHANGELOG
1
+ # Mechanize CHANGELOG
2
2
 
3
- === 2.7.6
3
+ ## 2.12.2 / 2023-10-02
4
+
5
+ * Quash warnings from `Mime::Type.new` in `mime-types` v3.6.0. (#655) @avk
6
+
7
+
8
+ ## 2.12.1 / 2024-08-21
9
+
10
+ * Introduce experimental support for handling Zstd-compressed responses (CRuby only). (#652) @adrianodennanni
11
+
12
+
13
+ ## 2.12.0 / 2024-07-29
14
+
15
+ * Introduce experimental support for handling Brotli-compressed responses (CRuby only). (#650) @weshatheleopard
16
+
17
+
18
+ ## 2.11.0 / 2024-07-18
19
+
20
+ * The `accept-charset` header is no longer sent. In early versions of Mechanize, circa 2007, this was a common header but now no modern browser sends it, and servers are instructed to ignore it. See #646 for an example of a server that is confused by its presence. (#647) @flavorjones
21
+
22
+
23
+ ## 2.10.1 / 2024-06-12
24
+
25
+ * Improve page encoding error recovery on pages with broken encoding when used with libxml2 >= 2.12.0. (#644) @flavorjones
26
+
27
+
28
+ ## 2.10.0 / 2024-01-22
29
+
30
+ * Add `nkf` and `base64` as explicit dependencies, since they are being unbundled in Ruby 3.4. (#634) @flavorjones
31
+
32
+
33
+ ## 2.9.2 / 2024-01-15
34
+
35
+ * Correct spelling errors in documentation. (#631) @p-linnane
36
+ * Updated User-Agent strings to represent modern browser versions. (#632) @takatea
37
+
38
+
39
+ ## 2.9.1 / 2023-04-17
40
+
41
+ ### Update
42
+
43
+ * Updated User-Agent strings to represent modern browser versions. (#612) Thank you, @takatea!
44
+
45
+
46
+ ## 2.9.0 / 2023-04-07
47
+
48
+ ### Requirements
49
+
50
+ * Mechanize now requires Ruby 2.6 or newer.
51
+
52
+
53
+ ### Improvement
54
+
55
+ * Mechanize can now parse frozen strings. (#610)
56
+
57
+
58
+ ## 2.8.5 / 2022-06-09
59
+
60
+ ### Security
61
+
62
+ Fixes low-severity CVE-2022-31033, "Authorization header leak on port redirect." See [GHSA-64qm-hrgp-pgr9](https://github.com/sparklemotion/mechanize/security/advisories/GHSA-64qm-hrgp-pgr9) for more details.
63
+
64
+
65
+ ## 2.8.4 / 2022-01-17
66
+
67
+ ### Fix
68
+
69
+ * `Mechanize::CookieJar#load` calls `Psych.safe_load` when using Psych >= 3.1
70
+
71
+
72
+ ## 2.8.3 / 2021-11-11
73
+
74
+ ### Update
75
+
76
+ * Update the "Linux Firefox" user agent string to rev94 (#587) Thank you, @ncs1!
77
+
78
+
79
+ ## 2.8.2 / 2021-08-06
80
+
81
+ ### Dependencies
82
+
83
+ * Update dependency on Addressable from `~>2.7` to `~>2.8`. (#584) @yidingww
84
+
85
+
86
+ ## 2.8.1 / 2021-05-09
87
+
88
+ ### Fix
89
+
90
+ * Gracefully handle parsing errors that contain an invalid byte sequence. Previously, if libxml2 registered a parsing error that itself contained invalid encoding, an exception might be raised. (#553)
91
+
92
+
93
+ ## 2.8.0 / 2021-04-01
94
+
95
+ ### Requirements
96
+
97
+ * Mechanize now requires Ruby 2.5 or newer.
98
+ * Move from `ntlm-http` to `rubyntlm` gem. (#495, #574)
99
+
100
+ ### New Features
101
+
102
+ * Page::Link#uri now handles non-ASCII `href`s. (#569) @terryyin
103
+ * FileConnection supports Windows drive letters (#483)
104
+ * Credential headers 'Authorization' and 'Cookie' are deleted on cross-origin redirects. (#538) @kyoshidajp
105
+ * ContentDispositionParser handles ISO8601 date headers, to be robust with websites that ignore RFC2183. (#554) @reitermarkus
106
+
107
+ ### Bug fix
108
+
109
+ * POST headers 'Content-Length', 'Content-MD5', and 'Content-Type' are deleted in a case-insensitive manner on redirects. Previously these headers were treated as case-sensitive.
110
+
111
+
112
+ ## 2.7.7 / 2021-02-01
113
+
114
+ * Security fixes for CVE-2021-21289
115
+
116
+ Mechanize `>= v2.0`, `< v2.7.7` allows for OS commands to be injected into several classes'
117
+ methods via implicit use of Ruby's `Kernel.open` method. Exploitation is possible only if
118
+ untrusted input is used as a local filename and passed to any of these calls:
119
+
120
+ - `Mechanize::CookieJar#load`: since v2.0 (see 208e3ed)
121
+ - `Mechanize::CookieJar#save_as`: since v2.0 (see 5b776a4)
122
+ - `Mechanize#download`: since v2.2 (see dc91667)
123
+ - `Mechanize::Download#save` and `#save!` since v2.1 (see 98b2f51, bd62ff0)
124
+ - `Mechanize::File#save` and `#save_as`: since v2.1 (see 2bf7519)
125
+ - `Mechanize::FileResponse#read_body`: since v2.0 (see 01039f5)
126
+
127
+ See https://github.com/sparklemotion/mechanize/security/advisories/GHSA-qrqm-fpv6-6r8g for more
128
+ information.
129
+
130
+ Also see #547, #548. Thank you, @kyoshidajp!
131
+
132
+ * New Features
133
+ * Support for Ruby 3.0 by adding `webrick` as a runtime dependency. (#557) @pvalena
134
+
135
+ * Bug fix
136
+ * Ignore input fields with blank names (#542, #536)
137
+
138
+
139
+ ## 2.7.6
4
140
 
5
141
  * New Features
6
142
  * Mechanize#set_proxy accepts an HTTP URL/URI. (#513)
@@ -9,10 +145,10 @@
9
145
  * Fix element(s)_with(search: selector) methods not working for forms, form fields and frames. (#444)
10
146
  * Improve the filename parser for the `Content-Disposition` header. (#496, #517)
11
147
  * Accept `Content-Encoding: identity`. (#515)
12
- * Mechanize::Page#title no longer picks a title in an embeded SVG/RDF element. (#503)
148
+ * Mechanize::Page#title no longer picks a title in an embedded SVG/RDF element. (#503)
13
149
  * Make Mechanize::Form#has_field? boolean. (#501)
14
150
 
15
- === 2.7.5
151
+ ## 2.7.5
16
152
 
17
153
  * New Features
18
154
  * All 4xx responses and RedirectLimitReachedError when fetching robots.txt are treated as full allow just like Googlebot does.
@@ -23,7 +159,7 @@
23
159
  * Fix basic authentication for a realm that contains uppercase characters. (#458, #459)
24
160
  * Fix encoding error when uploading a file which name is non-ASCII. (#333)
25
161
 
26
- === 2.7.4
162
+ ## 2.7.4
27
163
 
28
164
  * New Features
29
165
  * Accept array-like and hash-like values as query/parameter value.
@@ -45,7 +181,7 @@
45
181
  * Fix whitespace bug in WWW-Authenticate. #451, #450, by Rasmus Bergholdt
46
182
  * Don't allow redirect from a non-file URL to a file URL for security reasons. (#455)
47
183
 
48
- === 2.7.3
184
+ ## 2.7.3
49
185
 
50
186
  * New Features
51
187
  * Allow net-http-persistent instance to be named. #324, John Weir.
@@ -56,34 +192,33 @@
56
192
  * Ensure Download#save! defaults back to original filename if
57
193
  none is provided (#300)
58
194
 
59
- === 2.7.2
195
+ ## 2.7.2
60
196
 
61
197
  * Bug fix
62
198
  * API compatibility issues with Mechanize::CookieJar cookies has been
63
199
  addressed. https://github.com/sparklemotion/http-cookie/issues/2 #326
64
200
 
65
- === 2.7.1
201
+ ## 2.7.1
66
202
 
67
203
  * Bug fix
68
204
  * Ensure images with no "src" attribute still return correct URLs. #317
69
205
  * Fixes Mechanize::Parser#extract_filename where an empty string filename
70
206
  in the response caused unhandled exception. #318
71
207
 
72
- === 2.7.0
208
+ ## 2.7.0
73
209
 
74
210
  * New Features
75
211
  * Mechanize::Agent#response_read will now raise a
76
212
  Mechanize::ResponseReadError instead of an EOFError and avoid losing
77
213
  requested content. #296.
78
- * Depend on http-cookie, add backwards compatible deprecations.
79
- #257 Akinori MUSHA.
214
+ * Depend on http-cookie, add backwards compatible deprecations. #257 Akinori MUSHA.
80
215
  * Added `Download#save!` for overwriting existing files. #300 Sean Kim.
81
216
 
82
217
  * Bug fix
83
218
  * Ensure page URLs with whitespace in them are escaped #313 @pacop.
84
219
  * Added a workaround for a bug of URI#+ that led to failure in resolving a relative path containing double slash like "/../http://.../". #304
85
220
 
86
- === 2.6.0
221
+ ## 2.6.0
87
222
 
88
223
  * New Features
89
224
  * Mechanize#start and Mechanize#shutdown (Thanks, Damian Janowski!)
@@ -105,19 +240,16 @@
105
240
  * Added iPad and Android user agents. #277 by sambit, #278 by seansay.
106
241
 
107
242
  * Bug fix
108
- * Mechanize#cert and Mechanize#key now return the values set by
109
- #cert= and #key=. #244, #245 (Thanks, Robert Gogolok!)
110
- * Mechanize no longer submits disabled form fields. #276 by Bogdan Gusiev,
111
- #279 by Ricardo Valeriano.
243
+ * Mechanize#cert and Mechanize#key now return the values set by #cert= and #key=. #244, #245 (Thanks, Robert Gogolok!)
244
+ * Mechanize no longer submits disabled form fields. #276 by Bogdan Gusiev, #279 by Ricardo Valeriano.
112
245
  * Mechanize::File#save now behaves like Mechanize::Download#save in
113
- that it will create the parent directory before saving.
114
- #272, #280 by Ryan Kowalick
246
+ that it will create the parent directory before saving. #272, #280 by Ryan Kowalick
115
247
  * Ensure `application/xml` is registered as an XML parser in
116
248
  `PluggableParser`, not just `text/xml`. #266 James Gregory
117
249
  * Mechanize now writes cookiestxt with a prefixed dot for wildcard domain
118
250
  handling. #295 by Mike Morearty.
119
251
 
120
- === 2.5.2
252
+ ## 2.5.2
121
253
 
122
254
  * New Features
123
255
  * Mechanize::CookieJar#save_as takes a keyword option "session" to say
@@ -131,18 +263,17 @@
131
263
  In mechanize 3 the old "Mac FireFox" user-agent alias will be removed.
132
264
  Pull request #231 by Gavin Miller.
133
265
  * Mechanize now authenticates using the raw challenge, not a reconstructed
134
- one, to avoid dealing with quoting rules of RFC 2617. Fixes failures in
135
- #231 due to net-http-digest_auth 1.2.1
266
+ one, to avoid dealing with quoting rules of RFC 2617. Fixes failures in #231 due to net-http-digest_auth 1.2.1
136
267
  * Fixed Content-Disposition parameter parser to be case insensitive. #233
137
268
  * Fixed redirection counting in following meta refresh. #240
138
269
 
139
- === 2.5.1
270
+ ## 2.5.1
140
271
 
141
272
  * Bug fix
142
273
  * Mechanize no longer copies POST requests during a redirect which was
143
274
  introduced by #215. Pull request #229 by Godfrey Chan.
144
275
 
145
- === 2.5
276
+ ## 2.5
146
277
 
147
278
  * Minor enhancements
148
279
  * Added Mechanize#ignore_bad_chunking for working around servers that don't
@@ -163,12 +294,11 @@
163
294
  terminate chunked transfer-encoding properly. Issue #116
164
295
  * Mechanize no longer raises an exception when multiple identical
165
296
  radiobuttons are checked. Issue #214 by Matthias Guenther
166
- * Fixed documentation for pre_connect_hooks and post_connect_hooks. Issue
167
- #226 by Robert Poor
297
+ * Fixed documentation for pre_connect_hooks and post_connect_hooks. Issue #226 by Robert Poor
168
298
  * Worked around ruby 1.8 run with -Ku and ISO-8859-1 encoded characters in
169
299
  URIs. Issue #228 by Stanislav O.Pogrebnyak
170
300
 
171
- === 2.4
301
+ ## 2.4
172
302
 
173
303
  * Security fix:
174
304
 
@@ -191,7 +321,7 @@
191
321
  * Improved exception messages for 401 Unauthorized responses. Mechanize now
192
322
  tells you if you were missing credentials, had an incorrect password, etc.
193
323
 
194
- === 2.3 / 2012-02-20
324
+ ## 2.3 / 2012-02-20
195
325
 
196
326
  * Minor enhancements
197
327
  * Add support for the Max-Age attribute in the Set-Cookie header.
@@ -211,14 +341,14 @@
211
341
  * Cookies with an empty Expires attribute value were stored as session
212
342
  cookies but cookies without the Expires attribute were not. Issue #78
213
343
 
214
- === 2.2.1 / 2012-02-13
344
+ ## 2.2.1 / 2012-02-13
215
345
 
216
346
  * Bug fixes
217
347
  * Add missing file to the gem, ensure that missing files won't cause
218
348
  failures again. Issue #201 by Alex
219
349
  * Fix minor grammar issue in README. Issue #200 by Shane Becker.
220
350
 
221
- === 2.2 / 2012-02-12
351
+ ## 2.2 / 2012-02-12
222
352
 
223
353
  * API changes
224
354
  * MetaRefresh#href is not normalized to an absolute URL, but set to the
@@ -230,8 +360,7 @@
230
360
  * SSL parameters and proxy may now be set at any time. Issue #194 by
231
361
  dsisnero.
232
362
  * Improved Mechanize::Page with #image_with and #images_with and
233
- Mechanize::Page::Image various img element attribute accessors, #caption,
234
- #extname, #mime_type and #fetch. Pull request #173 by kitamomonga
363
+ Mechanize::Page::Image various img element attribute accessors, #caption, #extname, #mime_type and #fetch. Pull request #173 by kitamomonga
235
364
  * Added MIME type parsing for content-types in Mechanize::PluggableParser
236
365
  for fine-grained parser choices. Parsers will be chosen based on exact
237
366
  match, simplified type or media type in that order. See
@@ -253,7 +382,7 @@
253
382
  * A link with an empty href is now resolved correctly where previously the
254
383
  query part was dropped.
255
384
 
256
- === 2.1.1 / 2012-02-03
385
+ ## 2.1.1 / 2012-02-03
257
386
 
258
387
  * Bug fixes
259
388
  * Set missing idle_timeout default. Issue #196
@@ -281,7 +410,7 @@
281
410
  * Documented how to convert a Mechanize::ResponseReadError into a File or
282
411
  Page, along with a new method #force_parse. Issue #176
283
412
 
284
- === 2.1 / 2011-12-20
413
+ ## 2.1 / 2011-12-20
285
414
 
286
415
  * Deprecations
287
416
  * Mechanize#get no longer accepts an options hash.
@@ -294,8 +423,7 @@
294
423
  * SSL connections will be verified against the system certificate store by
295
424
  default.
296
425
  * Added Mechanize#retry_change_requests to allow mechanize to retry POST and
297
- other non-idempotent requests when you know it is safe to do so. Issue
298
- #123
426
+ other non-idempotent requests when you know it is safe to do so. Issue #123
299
427
  * Mechanize can now stream files directly to disk without loading them into
300
428
  memory first through Mechanize::Download, a pluggable parser for
301
429
  downloading files.
@@ -310,8 +438,7 @@
310
438
  agent.pluggable_parser.default = Mechanize::Download
311
439
  * Added Mechanize#content_encoding_hooks which allow handling of
312
440
  non-standard content encodings like "agzip". Patch #125 by kitamomonga
313
- * Added dom_class to elements and the element matcher like dom_id. Patch
314
- #156 by Dan Hansen.
441
+ * Added dom_class to elements and the element matcher like dom_id. Patch #156 by Dan Hansen.
315
442
  * Added support for the HTML5 keygen form element. See
316
443
  http://dev.w3.org/html5/spec/Overview.html#the-keygen-element Patch #157
317
444
  by Victor Costan.
@@ -324,8 +451,8 @@
324
451
  * When given multiple HTTP authentication options mechanize now picks the
325
452
  strongest method.
326
453
  * Improvements to HTTP authorization:
327
- * mechanize raises Mechanize::UnathorizedError for 401 responses which is
328
- a sublcass of Mechanize::ResponseCodeError.
454
+ * mechanize raises Mechanize::UnauthorizedError for 401 responses which is
455
+ a subclass of Mechanize::ResponseCodeError.
329
456
  * Added support for NTLM authentication, but this has not been tested.
330
457
  * Mechanize::Cookie.new accepts attributes in a hash.
331
458
  * Mechanize::CookieJar#<<(cookie) (alias: add!) is added. Issue #139
@@ -360,11 +487,10 @@
360
487
  * The original Referer value persists on redirection. Issue #150
361
488
  * Do not send a referer on a Refresh header based redirection.
362
489
  * Fixed encoding error in tests when LANG=C. Patch #142 by jinschoi.
363
- * The order of items in a form submission now match the DOM order. Patch
364
- #129 by kitamomonga
490
+ * The order of items in a form submission now match the DOM order. Patch #129 by kitamomonga
365
491
  * Fixed proxy example in EXAMPLE. Issue #146 by NielsKSchjoedt
366
492
 
367
- === 2.0.1 / 2011-06-28
493
+ ## 2.0.1 / 2011-06-28
368
494
 
369
495
  Mechanize now uses minitest to avoid 1.9 vs 1.8 assertion availability in
370
496
  test/unit
@@ -375,7 +501,7 @@ test/unit
375
501
  * Mechanize#keep_alive_time no longer crashes but does nothing as
376
502
  net-http-persistent does not support HTTP/1.0 keep-alive extensions.
377
503
 
378
- === 2.0 / 2011-06-27
504
+ ## 2.0 / 2011-06-27
379
505
 
380
506
  Mechanize is now under the MIT license
381
507
 
@@ -417,7 +543,7 @@ Mechanize is now under the MIT license
417
543
 
418
544
  * New Features
419
545
 
420
- * Add header reference methods to Mechanize::File so that a reponse
546
+ * Add header reference methods to Mechanize::File so that a response
421
547
  object gets compatible with Net::HTTPResponse.
422
548
  * Mechanize#click accepts a regexp or string to click a button/link in the
423
549
  current page. It works as expected when not passed a string or regexp.
@@ -429,8 +555,7 @@ Mechanize is now under the MIT license
429
555
  * Mechanize now implements session cookies. GH #78
430
556
  * Mechanize now implements deflate decoding. GH #40
431
557
  * Mechanize now allows a certificate and key to be passed directly. GH #71
432
- * Mechanize::Form::MultiSelectList now implements #option_with and
433
- #options_with. GH #42
558
+ * Mechanize::Form::MultiSelectList now implements #option_with and #options_with. GH #42
434
559
  * Add Mechanize::Page::Link#rel and #rel?(kind) to read and test the rel
435
560
  attribute.
436
561
  * Add Mechanize::Page#canonical_uri to read a </tt><link
@@ -483,7 +608,7 @@ Mechanize is now under the MIT license
483
608
  * Mechanize::Page::Link#uri now handles both escaped and unescaped hrefs.
484
609
  GH #107
485
610
 
486
- === 1.0.0
611
+ ## 1.0.0
487
612
 
488
613
  * New Features:
489
614
 
@@ -501,7 +626,7 @@ Mechanize is now under the MIT license
501
626
  * Fixing default values with serialized cookies. GH #3
502
627
  * Checkboxes and fields are sorted by page appearance before submitting. #11
503
628
 
504
- === 0.9.3
629
+ ## 0.9.3
505
630
 
506
631
  * Bug Fixes:
507
632
 
@@ -519,7 +644,7 @@ Mechanize is now under the MIT license
519
644
  * Fixed a bug with double semi-colons in Content-Disposition headers
520
645
  * Properly handling cookies that specify a path. RF #25259
521
646
 
522
- === 0.9.2 / 2009/03/05
647
+ ## 0.9.2 / 2009/03/05
523
648
 
524
649
  * New Features:
525
650
  * Mechanize#submit and Form#submit take arbitrary headers(thanks penguincoder)
@@ -532,7 +657,7 @@ Mechanize is now under the MIT license
532
657
  * Made Content-Type match case insensitive (Thanks Kelly Reynolds)
533
658
  * Non-string form parameters work
534
659
 
535
- === 0.9.1 2009/02/23
660
+ ## 0.9.1 2009/02/23
536
661
 
537
662
  * New Features:
538
663
  * Encoding may be specified for a page: Page#encoding=
@@ -548,7 +673,7 @@ Mechanize is now under the MIT license
548
673
  * WAP content types will now be parsed
549
674
  * Rescued poorly formatted cookies. Thanks Kelley Reynolds!
550
675
 
551
- === 0.9.0
676
+ ## 0.9.0
552
677
 
553
678
  * Deprecations
554
679
  * WWW::Mechanize::List is gone!
@@ -558,7 +683,7 @@ Mechanize is now under the MIT license
558
683
  * Bug Fixes:
559
684
  * Nil check on page when base tag is used #23021
560
685
 
561
- === 0.8.5
686
+ ## 0.8.5
562
687
 
563
688
  * Deprecations
564
689
  * WWW::Mechanize::List will be deprecated in 0.9.0, and warnings have
@@ -582,28 +707,28 @@ Mechanize is now under the MIT license
582
707
  * Mechanize#get requests no longer send a referer unless they are relative
583
708
  requests.
584
709
 
585
- === 0.8.4
710
+ ## 0.8.4
586
711
 
587
712
  * Bug Fixes:
588
713
  * Setting the port number on the host header.
589
714
  * Fixing Authorization headers for picky servers
590
715
 
591
- === 0.8.3
716
+ ## 0.8.3
592
717
 
593
718
  * Bug Fixes:
594
719
  * Making sure logger is set during SSL connections.
595
720
 
596
- === 0.8.2
721
+ ## 0.8.2
597
722
 
598
723
  * Bug Fixes:
599
724
  * Doh! I was accidentally setting headers twice.
600
725
 
601
- === 0.8.1
726
+ ## 0.8.1
602
727
 
603
728
  * Bug Fixes:
604
729
  * Fixed problem with nil pointer when logger is set
605
730
 
606
- === 0.8.0
731
+ ## 0.8.0
607
732
 
608
733
  * New Features:
609
734
  * Lifecycle hooks. Mechanize#pre_connect_hooks, Mechanize#post_connect_hooks
@@ -617,7 +742,7 @@ Mechanize is now under the MIT license
617
742
  * Only setting headers once
618
743
  * Adding IIS authentication support
619
744
 
620
- === 0.7.8
745
+ ## 0.7.8
621
746
 
622
747
  * Bug Fixes:
623
748
  * Fixed bug when receiving a 304 response (HTTPNotModified) on a page not
@@ -625,7 +750,7 @@ Mechanize is now under the MIT license
625
750
  * #21428 Default to HTML parser for 'application/xhtml+xml' content-type.
626
751
  * Fixed an issue where redirects were resending posted data
627
752
 
628
- === 0.7.7
753
+ ## 0.7.7
629
754
 
630
755
  * New Features:
631
756
  * Page#form_with takes a +criteria+ hash.
@@ -643,10 +768,10 @@ Mechanize is now under the MIT license
643
768
  http://d.hatena.ne.jp/kitamomonga/20080410/ruby_mechanize_percent_url_bug
644
769
  * #21132 Not checking for EOF errors on redirect
645
770
  * Fixed a weird gzipping error.
646
- * #21233 Smarter multipart boundry. Thanks Todd Willey!
771
+ * #21233 Smarter multipart boundary. Thanks Todd Willey!
647
772
  * #20097 Supporting meta tag cookies.
648
773
 
649
- === 0.7.6
774
+ ## 0.7.6
650
775
 
651
776
  * New Features:
652
777
  * Added support for reading Mozilla cookie jars. Thanks Chris Riddoch!
@@ -669,32 +794,32 @@ Mechanize is now under the MIT license
669
794
  * Supporting blank strings for option values.
670
795
  http://rubyforge.org/tracker/index.php?func=detail&aid=19975&group_id=1453&atid=5709
671
796
 
672
- === 0.7.5
797
+ ## 0.7.5
673
798
 
674
799
  * Fixed a bug when fetching files and not pages. Thanks Mat Schaffer!
675
800
 
676
- === 0.7.4
801
+ ## 0.7.4
677
802
 
678
803
  * doh!
679
804
 
680
- === 0.7.3
805
+ ## 0.7.3
681
806
 
682
807
  * Pages are now yielded to a blocks given to WWW::Mechanize#get
683
808
  * WWW::Mechanize#get now takes hash arguments for uri parameters.
684
809
  * WWW::Mechanize#post takes an IO object as a parameter and posts correctly.
685
810
  * Fixing a strange zlib inflate problem on windows
686
811
 
687
- === 0.7.2
812
+ ## 0.7.2
688
813
 
689
814
  * Handling gzipped responses with no Content-Length header
690
815
 
691
- === 0.7.1
816
+ ## 0.7.1
692
817
 
693
818
  * Added iPhone to the user agent aliases. [#17572]
694
819
  * Fixed a bug with EOF errors in net/http. [#17570]
695
820
  * Handling 0 length gzipped responses. [#17471]
696
821
 
697
- === 0.7.0
822
+ ## 0.7.0
698
823
 
699
824
  * Removed Ruby 1.8.2 support
700
825
  * Changed parser to lazily parse links
@@ -702,7 +827,7 @@ Mechanize is now under the MIT license
702
827
  * Adding verify_callback for SSL requests. Thanks Mike Dalessio!
703
828
  * Fixed a bug with Accept-Language header. Thanks Bill Siggelkow.
704
829
 
705
- === 0.6.11
830
+ ## 0.6.11
706
831
 
707
832
  * Detecting single quotes in meta redirects.
708
833
  * Adding pretty inspect for ruby versions > 1.8.4 (Thanks Joel Kociolek)
@@ -713,7 +838,7 @@ Mechanize is now under the MIT license
713
838
  * Added a FAQ
714
839
  http://rubyforge.org/tracker/?func=detail&aid=15772&group_id=1453&atid=5709
715
840
 
716
- === 0.6.10
841
+ ## 0.6.10
717
842
 
718
843
  * Made digest authentication work with POSTs.
719
844
  * Made sure page was HTML before following meta refreshes.
@@ -732,7 +857,7 @@ Mechanize is now under the MIT license
732
857
  * Aliasing inspect to pretty_inspect. Thanks Eric Promislow.
733
858
  http://rubyforge.org/pipermail/mechanize-users/2007-July/000157.html
734
859
 
735
- === 0.6.9
860
+ ## 0.6.9
736
861
 
737
862
  * Updating UTF-8 support for urls
738
863
  * Adding AREA tags to the links list.
@@ -744,7 +869,7 @@ Mechanize is now under the MIT license
744
869
  * Added Digest Authentication support. Thanks to Ryan Davis and Eric Hodel,
745
870
  you get a gold star!
746
871
 
747
- === 0.6.8
872
+ ## 0.6.8
748
873
 
749
874
  * Keep alive can be shut off now with WWW::Mechanize#keep_alive
750
875
  * Conditional requests can be shut off with WWW::Mechanize#conditional_requests
@@ -752,25 +877,25 @@ Mechanize is now under the MIT license
752
877
  * [#9877] Moved last request time. Thanks Max Stepanov
753
878
  * Added WWW::Mechanize::File#save
754
879
  * Defaulting file name to URI or Content-Disposition
755
- * Updating compatability with hpricot
880
+ * Updating compatibility with hpricot
756
881
  * Added more unit tests
757
882
 
758
- === 0.6.7
883
+ ## 0.6.7
759
884
 
760
885
  * Fixed a bug with keep-alive requests
761
886
  * [#9549] fixed problem with cookie paths
762
887
 
763
- === 0.6.6
888
+ ## 0.6.6
764
889
 
765
890
  * Removing hpricot overrides
766
891
  * Fixed a bug where alt text can be nil. Thanks Yannick!
767
- * Unparseable expiration dates in cookies are now treated as session cookies
892
+ * Unparsable expiration dates in cookies are now treated as session cookies
768
893
  * Caching connections
769
894
  * Requests now default to keep alive
770
895
  * [#9434] Fixed bug where html entities weren't decoded
771
896
  * [#9150] Updated mechanize history to deal with redirects
772
897
 
773
- === 0.6.5
898
+ ## 0.6.5
774
899
 
775
900
  * Copying headers to a hash to prevent memory leaks
776
901
  * Speeding up page parsing
@@ -785,7 +910,7 @@ Mechanize is now under the MIT license
785
910
  http://rubyforge.org/tracker/?func=detail&aid=7563&group_id=1453&atid=5709
786
911
  * Added MSIE 7.0 user agent string
787
912
 
788
- === 0.6.4
913
+ ## 0.6.4
789
914
 
790
915
  * Adding the "redirect_ok" method to Mechanize to stop mechanize from
791
916
  following redirects.
@@ -802,7 +927,7 @@ Mechanize is now under the MIT license
802
927
  * Fixed bug [#6548]. Input type of 'button' was not being added as a button.
803
928
  * Fixed bug [#7139]. REXML parser calls hpricot parser by accident
804
929
 
805
- === 0.6.3
930
+ ## 0.6.3
806
931
 
807
932
  * Added keys and values methods to Form
808
933
  * Added has_value? to Form
@@ -817,7 +942,7 @@ Mechanize is now under the MIT license
817
942
  * Fixed a bug where '#' symbols are encoded
818
943
  http://rubyforge.org/forum/message.php?msg_id=14747
819
944
 
820
- === 0.6.2
945
+ ## 0.6.2
821
946
 
822
947
  * Added a yield to Page#form so that dealing with forms can be more DSL like.
823
948
  * Added the parsed page to the ResponseCodeError so that the parsed results
@@ -825,12 +950,12 @@ Mechanize is now under the MIT license
825
950
  http://rubyforge.org/pipermail/mechanize-users/2006-September/000007.html
826
951
  * Updated documentation (Thanks to Paul Smith)
827
952
 
828
- === 0.6.1
953
+ ## 0.6.1
829
954
 
830
955
  * Added a method to Form called "submit". Now forms can be submitted by
831
956
  calling a method on the form.
832
957
  * Added a click method to links
833
- * Added an REXML pluggable parser for backwards compatability. To use it,
958
+ * Added an REXML pluggable parser for backwards compatibility. To use it,
834
959
  just do this:
835
960
  agent.pluggable_parser.html = WWW::Mechanize::REXMLPage
836
961
  * Fixed a bug with referrers by adding a page attribute to forms and links.
@@ -843,7 +968,7 @@ Mechanize is now under the MIT license
843
968
  * Fixed a bug with loading text in to links.
844
969
  http://rubyforge.org/pipermail/mechanize-users/2006-September/000000.html
845
970
 
846
- === 0.6.0
971
+ ## 0.6.0
847
972
 
848
973
  * Changed main parser to use hpricot
849
974
  * Made WWW::Mechanize::Page class searchable like hpricot
@@ -855,7 +980,7 @@ Mechanize is now under the MIT license
855
980
  * Removed REXML helper methods since the main parser is now hpricot
856
981
  * Overhauled cookie parser to use WEBrick::Cookie
857
982
 
858
- === 0.5.4
983
+ ## 0.5.4
859
984
 
860
985
  * Added WWW::Mechanize#trasact for saving history state between in a
861
986
  transaction. See the EXAMPLES file. Thanks Johan Kiviniemi.
@@ -870,7 +995,7 @@ Mechanize is now under the MIT license
870
995
  * Fixed a bug with saving files on windows
871
996
  * Fixed a bug with the filename being set in forms
872
997
 
873
- === 0.5.3
998
+ ## 0.5.3
874
999
 
875
1000
  * Mechanize#click will now act on the first element of an array. So if an
876
1001
  array of links is passed to WWW::Mechanize#click, the first link is clicked.
@@ -888,7 +1013,7 @@ Mechanize is now under the MIT license
888
1013
  * Updated log4r support for a speed increase. Thanks Yinon Bentor
889
1014
  * Added inspect methods and pretty printing
890
1015
 
891
- === 0.5.2
1016
+ ## 0.5.2
892
1017
 
893
1018
  * Fixed a bug with input names that are nil
894
1019
  * Added a warning when using attr_finder because attr_finder will be deprecated
@@ -905,12 +1030,12 @@ Mechanize is now under the MIT license
905
1030
  WWW::Mechanize::Form#set_fields. Which can be used like so:
906
1031
  form.set_fields( :foo => 'bar', :name => 'Aaron' )
907
1032
 
908
- === 0.5.1
1033
+ ## 0.5.1
909
1034
 
910
1035
  * Fixed bug with file uploads
911
1036
  * Added performance tweaks to the cookie class
912
1037
 
913
- === 0.5.0
1038
+ ## 0.5.0
914
1039
 
915
1040
  * Added pluggable parsers. (Thanks to Eric Kolve for the idea)
916
1041
  * Changed namespace so all classes are under WWW::Mechanize.
@@ -925,7 +1050,7 @@ Mechanize is now under the MIT license
925
1050
  * Removed support for body filters in favor of pluggable parsers.
926
1051
  * Fixed cookie bug adding a '/' when the url is missing one (Thanks Nick Dainty)
927
1052
 
928
- === 0.4.7
1053
+ ## 0.4.7
929
1054
 
930
1055
  * Fixed bug with no action in forms. Thanks to Adam Wiggins
931
1056
  * Setting a default user-agent string
@@ -934,7 +1059,7 @@ Mechanize is now under the MIT license
934
1059
  (thanks to Gregory Brown)
935
1060
  * Added WWW::Mechanize#get_file for fetching non text/html files
936
1061
 
937
- === 0.4.6
1062
+ ## 0.4.6
938
1063
 
939
1064
  * Added support for proxies
940
1065
  * Added a uri field to WWW::Link
@@ -945,7 +1070,7 @@ Mechanize is now under the MIT license
945
1070
  allows syntax as such: form.fields.name('q').value = 'xyz'
946
1071
  Before it was like this: form.fields.name('q').first.value = 'xyz'
947
1072
 
948
- === 0.4.5
1073
+ ## 0.4.5
949
1074
 
950
1075
  * Added support for multiple values of the same name
951
1076
  * Updated build_query_string to take an array of arrays (Thanks Michal Janeczek)
@@ -955,13 +1080,13 @@ Mechanize is now under the MIT license
955
1080
  * Fixed a bug with empty select lists
956
1081
  * Fixing a problem with cookies not handling no spaces after semicolons
957
1082
 
958
- === 0.4.4
1083
+ ## 0.4.4
959
1084
 
960
- * Fixed error in method signature, basic_authetication is now basic_auth
1085
+ * Fixed error in method signature, basic_authentication is now basic_auth
961
1086
  * Fixed bug with encoding names in file uploads (Big thanks to Alex Young)
962
1087
  * Added options to the select list
963
1088
 
964
- === 0.4.3
1089
+ ## 0.4.3
965
1090
 
966
1091
  * Added syntactic sugar for finding things
967
1092
  * Fixed bug with HttpOnly option in cookies
@@ -969,21 +1094,21 @@ Mechanize is now under the MIT license
969
1094
  * Defaulted dropdown lists to the first element
970
1095
  * Added unit tests
971
1096
 
972
- === 0.4.2
1097
+ ## 0.4.2
973
1098
 
974
1099
  * Added support for iframes
975
1100
  * Made mechanize dependant on ruby-web rather than narf
976
1101
  * Added unit tests
977
1102
  * Fixed a bunch of warnings
978
1103
 
979
- === 0.4.1
1104
+ ## 0.4.1
980
1105
 
981
1106
  * Added support for file uploading
982
1107
  * Added support for frames (Thanks Gabriel[mailto:leerbag@googlemail.com])
983
1108
  * Added more unit tests
984
1109
  * Fixed some bugs
985
1110
 
986
- === 0.4.0
1111
+ ## 0.4.0
987
1112
 
988
1113
  * Added more unit tests
989
1114
  * Added a cookie jar with better cookie support, included expiration of cookies