mechanize-ntlm 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/CHANGELOG.rdoc +480 -0
  2. data/EXAMPLES.rdoc +171 -0
  3. data/FAQ.rdoc +11 -0
  4. data/GUIDE.rdoc +122 -0
  5. data/LICENSE.rdoc +340 -0
  6. data/Manifest.txt +169 -0
  7. data/README.rdoc +60 -0
  8. data/Rakefile +44 -0
  9. data/examples/flickr_upload.rb +23 -0
  10. data/examples/mech-dump.rb +7 -0
  11. data/examples/proxy_req.rb +9 -0
  12. data/examples/rubyforge.rb +21 -0
  13. data/examples/spider.rb +11 -0
  14. data/lib/mechanize-ntlm.rb +7 -0
  15. data/lib/www/mechanize.rb +582 -0
  16. data/lib/www/mechanize/chain.rb +34 -0
  17. data/lib/www/mechanize/chain/auth_headers.rb +82 -0
  18. data/lib/www/mechanize/chain/body_decoding_handler.rb +43 -0
  19. data/lib/www/mechanize/chain/connection_resolver.rb +78 -0
  20. data/lib/www/mechanize/chain/custom_headers.rb +23 -0
  21. data/lib/www/mechanize/chain/handler.rb +9 -0
  22. data/lib/www/mechanize/chain/header_resolver.rb +48 -0
  23. data/lib/www/mechanize/chain/parameter_resolver.rb +23 -0
  24. data/lib/www/mechanize/chain/post_connect_hook.rb +0 -0
  25. data/lib/www/mechanize/chain/pre_connect_hook.rb +22 -0
  26. data/lib/www/mechanize/chain/request_resolver.rb +32 -0
  27. data/lib/www/mechanize/chain/response_body_parser.rb +40 -0
  28. data/lib/www/mechanize/chain/response_header_handler.rb +51 -0
  29. data/lib/www/mechanize/chain/response_reader.rb +41 -0
  30. data/lib/www/mechanize/chain/ssl_resolver.rb +36 -0
  31. data/lib/www/mechanize/chain/uri_resolver.rb +73 -0
  32. data/lib/www/mechanize/content_type_error.rb +16 -0
  33. data/lib/www/mechanize/cookie.rb +72 -0
  34. data/lib/www/mechanize/cookie_jar.rb +191 -0
  35. data/lib/www/mechanize/file.rb +73 -0
  36. data/lib/www/mechanize/file_response.rb +62 -0
  37. data/lib/www/mechanize/file_saver.rb +39 -0
  38. data/lib/www/mechanize/form.rb +359 -0
  39. data/lib/www/mechanize/form/button.rb +8 -0
  40. data/lib/www/mechanize/form/check_box.rb +13 -0
  41. data/lib/www/mechanize/form/field.rb +28 -0
  42. data/lib/www/mechanize/form/file_upload.rb +24 -0
  43. data/lib/www/mechanize/form/image_button.rb +23 -0
  44. data/lib/www/mechanize/form/multi_select_list.rb +69 -0
  45. data/lib/www/mechanize/form/option.rb +51 -0
  46. data/lib/www/mechanize/form/radio_button.rb +38 -0
  47. data/lib/www/mechanize/form/select_list.rb +45 -0
  48. data/lib/www/mechanize/headers.rb +12 -0
  49. data/lib/www/mechanize/history.rb +67 -0
  50. data/lib/www/mechanize/inspect.rb +90 -0
  51. data/lib/www/mechanize/monkey_patch.rb +37 -0
  52. data/lib/www/mechanize/page.rb +145 -0
  53. data/lib/www/mechanize/page/base.rb +10 -0
  54. data/lib/www/mechanize/page/frame.rb +22 -0
  55. data/lib/www/mechanize/page/link.rb +50 -0
  56. data/lib/www/mechanize/page/meta.rb +10 -0
  57. data/lib/www/mechanize/pluggable_parsers.rb +103 -0
  58. data/lib/www/mechanize/redirect_limit_reached_error.rb +18 -0
  59. data/lib/www/mechanize/redirect_not_get_or_head_error.rb +20 -0
  60. data/lib/www/mechanize/response_code_error.rb +25 -0
  61. data/lib/www/mechanize/unsupported_scheme_error.rb +10 -0
  62. data/lib/www/mechanize/util.rb +76 -0
  63. data/lib/www/ntlm-http/lib/net/ntlm_http.rb +854 -0
  64. data/mechanize.gemspec +24 -0
  65. data/test/chain/test_argument_validator.rb +14 -0
  66. data/test/chain/test_custom_headers.rb +18 -0
  67. data/test/chain/test_parameter_resolver.rb +35 -0
  68. data/test/chain/test_request_resolver.rb +29 -0
  69. data/test/chain/test_response_reader.rb +24 -0
  70. data/test/data/htpasswd +1 -0
  71. data/test/data/server.crt +16 -0
  72. data/test/data/server.csr +12 -0
  73. data/test/data/server.key +15 -0
  74. data/test/data/server.pem +15 -0
  75. data/test/helper.rb +127 -0
  76. data/test/htdocs/alt_text.html +10 -0
  77. data/test/htdocs/bad_form_test.html +9 -0
  78. data/test/htdocs/button.jpg +0 -0
  79. data/test/htdocs/empty_form.html +6 -0
  80. data/test/htdocs/file_upload.html +26 -0
  81. data/test/htdocs/find_link.html +41 -0
  82. data/test/htdocs/form_multi_select.html +16 -0
  83. data/test/htdocs/form_multival.html +37 -0
  84. data/test/htdocs/form_no_action.html +18 -0
  85. data/test/htdocs/form_no_input_name.html +16 -0
  86. data/test/htdocs/form_select.html +16 -0
  87. data/test/htdocs/form_select_all.html +16 -0
  88. data/test/htdocs/form_select_none.html +17 -0
  89. data/test/htdocs/form_select_noopts.html +10 -0
  90. data/test/htdocs/form_set_fields.html +14 -0
  91. data/test/htdocs/form_test.html +188 -0
  92. data/test/htdocs/frame_test.html +30 -0
  93. data/test/htdocs/google.html +13 -0
  94. data/test/htdocs/iframe_test.html +16 -0
  95. data/test/htdocs/index.html +6 -0
  96. data/test/htdocs/link with space.html +5 -0
  97. data/test/htdocs/meta_cookie.html +11 -0
  98. data/test/htdocs/no_title_test.html +6 -0
  99. data/test/htdocs/relative/tc_relative_links.html +21 -0
  100. data/test/htdocs/tc_bad_links.html +5 -0
  101. data/test/htdocs/tc_base_link.html +8 -0
  102. data/test/htdocs/tc_blank_form.html +11 -0
  103. data/test/htdocs/tc_checkboxes.html +19 -0
  104. data/test/htdocs/tc_encoded_links.html +5 -0
  105. data/test/htdocs/tc_follow_meta.html +8 -0
  106. data/test/htdocs/tc_form_action.html +48 -0
  107. data/test/htdocs/tc_links.html +18 -0
  108. data/test/htdocs/tc_no_attributes.html +16 -0
  109. data/test/htdocs/tc_pretty_print.html +17 -0
  110. data/test/htdocs/tc_radiobuttons.html +17 -0
  111. data/test/htdocs/tc_referer.html +10 -0
  112. data/test/htdocs/tc_relative_links.html +19 -0
  113. data/test/htdocs/tc_textarea.html +23 -0
  114. data/test/htdocs/unusual______.html +5 -0
  115. data/test/servlets.rb +339 -0
  116. data/test/ssl_server.rb +48 -0
  117. data/test/test_authenticate.rb +71 -0
  118. data/test/test_bad_links.rb +25 -0
  119. data/test/test_blank_form.rb +16 -0
  120. data/test/test_checkboxes.rb +61 -0
  121. data/test/test_content_type.rb +13 -0
  122. data/test/test_cookie_class.rb +338 -0
  123. data/test/test_cookie_jar.rb +343 -0
  124. data/test/test_cookies.rb +123 -0
  125. data/test/test_encoded_links.rb +20 -0
  126. data/test/test_errors.rb +49 -0
  127. data/test/test_follow_meta.rb +69 -0
  128. data/test/test_form_action.rb +44 -0
  129. data/test/test_form_as_hash.rb +61 -0
  130. data/test/test_form_button.rb +38 -0
  131. data/test/test_form_no_inputname.rb +15 -0
  132. data/test/test_forms.rb +575 -0
  133. data/test/test_frames.rb +25 -0
  134. data/test/test_get_headers.rb +52 -0
  135. data/test/test_gzipping.rb +22 -0
  136. data/test/test_hash_api.rb +45 -0
  137. data/test/test_history.rb +142 -0
  138. data/test/test_history_added.rb +16 -0
  139. data/test/test_html_unscape_forms.rb +39 -0
  140. data/test/test_if_modified_since.rb +20 -0
  141. data/test/test_keep_alive.rb +31 -0
  142. data/test/test_links.rb +120 -0
  143. data/test/test_mech.rb +259 -0
  144. data/test/test_mechanize_file.rb +47 -0
  145. data/test/test_multi_select.rb +106 -0
  146. data/test/test_no_attributes.rb +13 -0
  147. data/test/test_option.rb +18 -0
  148. data/test/test_page.rb +67 -0
  149. data/test/test_pluggable_parser.rb +145 -0
  150. data/test/test_post_form.rb +34 -0
  151. data/test/test_pretty_print.rb +22 -0
  152. data/test/test_radiobutton.rb +75 -0
  153. data/test/test_redirect_limit_reached.rb +41 -0
  154. data/test/test_redirect_verb_handling.rb +45 -0
  155. data/test/test_referer.rb +39 -0
  156. data/test/test_relative_links.rb +40 -0
  157. data/test/test_request.rb +13 -0
  158. data/test/test_response_code.rb +52 -0
  159. data/test/test_save_file.rb +48 -0
  160. data/test/test_scheme.rb +48 -0
  161. data/test/test_select.rb +106 -0
  162. data/test/test_select_all.rb +15 -0
  163. data/test/test_select_none.rb +15 -0
  164. data/test/test_select_noopts.rb +16 -0
  165. data/test/test_set_fields.rb +44 -0
  166. data/test/test_ssl_server.rb +20 -0
  167. data/test/test_subclass.rb +14 -0
  168. data/test/test_textarea.rb +45 -0
  169. data/test/test_upload.rb +109 -0
  170. data/test/test_verbs.rb +25 -0
  171. metadata +284 -0
@@ -0,0 +1,480 @@
1
+ = Mechanize CHANGELOG
2
+
3
+ === 0.9.2 / 2009/03/05
4
+
5
+ * New Features:
6
+ * Mechanize#submit and Form#submit take arbitrary headers(thanks penguincoder)
7
+
8
+ * Bug Fixes:
9
+ * Fixed a bug with bad cookie parsing
10
+ * Form::RadioButton#click unchecks other buttons (RF #24159)
11
+ * Fixed problems with Iconv (RF #24190, RF #24192, RF #24043)
12
+ * POST parameters should be CGI escaped
13
+ * Made Content-Type match case insensitive (Thanks Kelly Reynolds)
14
+ * Non-string form parameters work
15
+
16
+ === 0.9.1 2009/02/23
17
+
18
+ * New Features:
19
+ * Encoding may be specified for a page: Page#encoding=
20
+
21
+ * Bug Fixes:
22
+ * m17n fixes. ありがとう konn!
23
+ * Fixed a problem with base tags. ありがとう Keisuke
24
+ * HEAD requests do not record in the history
25
+ * Default encoding to ISO-8859-1 instead of ASCII
26
+ * Requests with URI instances should not be polluted RF #23472
27
+ * Nonce count fixed for digest auth requests. Thanks Adrian Slapa!
28
+ * Fixed a referer issue with requests using a uri. RF #23472
29
+ * WAP content types will now be parsed
30
+ * Rescued poorly formatted cookies. Thanks Kelley Reynolds!
31
+
32
+ === 0.9.0
33
+
34
+ * Deprecations
35
+ * WWW::Mechanize::List is gone!
36
+ * Mechanize uses Nokogiri as it's HTML parser but you may switch to
37
+ Hpricot by using WWW::Mechanize.html_parser = Hpricot
38
+
39
+ * Bug Fixes:
40
+ * Nil check on page when base tag is used #23021
41
+
42
+ === 0.8.5
43
+
44
+ * Deprecations
45
+ * WWW::Mechanize::List will be deprecated in 0.9.0, and warnings have
46
+ been added to help you upgrade.
47
+
48
+ * Bug Fixes:
49
+ * Stopped raising EOF exceptions on HEAD requests. ありがとう:HIRAKU Kuroda
50
+ * Fixed exceptions when a logger is set and file:// requests are made.
51
+ * Made Mechanize 1.9 compatible
52
+ * Not setting the port in the host header for SSL sites.
53
+ * Following refresh headers. Thanks Tim Connor!
54
+ * Cookie Jar handles cookie domains containing ports, like
55
+ 'mydomain.com:443' (Thanks Michal Ochman!)
56
+ * Fixing strange uri escaping problems [#22604]
57
+ * Making content-type determintation more robust. (thanks Han Holl!)
58
+ * Dealing with links that are query string only. [#22402]
59
+ * Nokogiri may be dropped in as a replacement.
60
+ WWW::Mechanize.html_parser = Nokogiri::HTML
61
+ * Making sure the correct page is added to the history on meta refresh.
62
+ [#22708]
63
+ * Mechanize#get requests no longer send a referer unless they are relative
64
+ requests.
65
+
66
+ === 0.8.4
67
+
68
+ * Bug Fixes:
69
+ * Setting the port number on the host header.
70
+ * Fixing Authorization headers for picky servers
71
+
72
+ === 0.8.3
73
+
74
+ * Bug Fixes:
75
+ * Making sure logger is set during SSL connections.
76
+
77
+ === 0.8.2
78
+
79
+ * Bug Fixes:
80
+ * Doh! I was accidentally setting headers twice.
81
+
82
+ === 0.8.1
83
+
84
+ * Bug Fixes:
85
+ * Fixed problem with nil pointer when logger is set
86
+
87
+ === 0.8.0
88
+
89
+ * New Features:
90
+ * Lifecycle hooks. Mechanize#pre_connect_hooks, Mechanize#post_connect_hooks
91
+ * file:/// urls are now supported
92
+ * Added Mechanize::Page#link_with, frame_with for searching for links using
93
+ +criteria+.
94
+ * Implementing PUT, DELETE, and HEAD requests
95
+
96
+ * Bug Fixes:
97
+ * Fixed an infinite loop when content-length and body length don't match.
98
+ * Only setting headers once
99
+ * Adding IIS authentication support
100
+
101
+ === 0.7.8
102
+
103
+ * Bug Fixes:
104
+ * Fixed bug when receiving a 304 response (HTTPNotModified) on a page not
105
+ cached in history.
106
+ * #21428 Default to HTML parser for 'application/xhtml+xml' content-type.
107
+ * Fixed an issue where redirects were resending posted data
108
+
109
+ === 0.7.7
110
+
111
+ * New Features:
112
+ * Page#form_with takes a +criteria+ hash.
113
+ * Page#form is changed to Page#form_with
114
+ * Mechanize#get takes custom http headers. Thanks Mike Dalessio!
115
+ * Form#click_button submits a form defaulting to the current button.
116
+ * Form#set_fields now takes a hash. Thanks Tobi!
117
+ * Mechanize#redirection_limit= for setting the max number of redirects.
118
+
119
+ * Bug Fixes:
120
+ * Added more examples. Thanks Robert Jackson.
121
+ * #20480 Making sure the Host header is set.
122
+ * #20672 Making sure cookies with weird semicolons work.
123
+ * Fixed bug with percent signs in urls.
124
+ http://d.hatena.ne.jp/kitamomonga/20080410/ruby_mechanize_percent_url_bug
125
+ * #21132 Not checking for EOF errors on redirect
126
+ * Fixed a weird gzipping error.
127
+ * #21233 Smarter multipart boundry. Thanks Todd Willey!
128
+ * #20097 Supporting meta tag cookies.
129
+
130
+ === 0.7.6
131
+
132
+ * New Features:
133
+ * Added support for reading Mozilla cookie jars. Thanks Chris Riddoch!
134
+ * Moving text, password, hidden, int to default. Thanks Tim Harper!
135
+ * Mechanize#history_added callback for page loads. Thanks Tobi Reif!
136
+ * Mechanize#scheme_handlers callbacks for handling unsupported schemes on
137
+ links.
138
+
139
+ * Bug Fixes:
140
+ * Ignoring scheme case
141
+ http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=470642
142
+ * Not encoding tildes in uris. Thanks Bruno. [#19380]
143
+ * Resetting request bodys when retrying form posts. Thanks Bruno. [#19379]
144
+ * Throwing away keep alive connections on EPIPE and ECONNRESET.
145
+ * Duplicating request headers when retrying a 401. Thanks Hiroshi Ichikawa.
146
+ * Simulating an EOF error when a response length is bad. Thanks Tobias Gruetzmacher.
147
+ http://rubyforge.org/tracker/index.php?func=detail&aid=19178&group_id=1453&atid=5711
148
+ * Defaulting option tags to the inner text.
149
+ http://rubyforge.org/tracker/index.php?func=detail&aid=19976&group_id=1453&atid=5709
150
+ * Supporting blank strings for option values.
151
+ http://rubyforge.org/tracker/index.php?func=detail&aid=19975&group_id=1453&atid=5709
152
+
153
+ === 0.7.5
154
+
155
+ * Fixed a bug when fetching files and not pages. Thanks Mat Schaffer!
156
+
157
+ === 0.7.4
158
+
159
+ * doh!
160
+
161
+ === 0.7.3
162
+
163
+ * Pages are now yielded to a blocks given to WWW::Mechanize#get
164
+ * WWW::Mechanize#get now takes hash arguments for uri parameters.
165
+ * WWW::Mechanize#post takes an IO object as a parameter and posts correctly.
166
+ * Fixing a strange zlib inflate problem on windows
167
+
168
+ === 0.7.2
169
+
170
+ * Handling gzipped responses with no Content-Length header
171
+
172
+ === 0.7.1
173
+
174
+ * Added iPhone to the user agent aliases. [#17572]
175
+ * Fixed a bug with EOF errors in net/http. [#17570]
176
+ * Handling 0 length gzipped responses. [#17471]
177
+
178
+ === 0.7.0
179
+
180
+ * Removed Ruby 1.8.2 support
181
+ * Changed parser to lazily parse links
182
+ * Lazily parsing document
183
+ * Adding verify_callback for SSL requests. Thanks Mike Dalessio!
184
+ * Fixed a bug with Accept-Language header. Thanks Bill Siggelkow.
185
+
186
+ === 0.6.11
187
+
188
+ * Detecting single quotes in meta redirects.
189
+ * Adding pretty inspect for ruby versions > 1.8.4 (Thanks Joel Kociolek)
190
+ http://rubyforge.org/tracker/index.php?func=detail&aid=13150&group_id=1453&atid=5709
191
+ * Fixed bug with file name in multipart posts
192
+ http://rubyforge.org/tracker/?func=detail&aid=15594&group_id=1453&atid=5709
193
+ * Posting forms relative to the originating page. Thanks Mortee.
194
+ * Added a FAQ
195
+ http://rubyforge.org/tracker/?func=detail&aid=15772&group_id=1453&atid=5709
196
+
197
+ === 0.6.10
198
+
199
+ * Made digest authentication work with POSTs.
200
+ * Made sure page was HTML before following meta refreshes.
201
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12260&group_id=1453&atid=5709
202
+ * Made sure that URLS with a host and no path would default to '/' for history
203
+ purposes.
204
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12368&group_id=1453&atid=5709
205
+ * Avoiding memory leaks with transact. Thanks Tobias Gruetzmacher!
206
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12057&group_id=1453&atid=5711
207
+ * Fixing a problem with # signs in the file name. Thanks Tobias Gruetzmacher!
208
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12510&group_id=1453&atid=5711
209
+ * Made sure that blank form values are submitted.
210
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12505&group_id=1453&atid=5709
211
+ * Mechanize now respects the base tag. Thanks Stephan Dale.
212
+ http://rubyforge.org/tracker/index.php?func=detail&aid=12468&group_id=1453&atid=5709
213
+ * Aliasing inspect to pretty_inspect. Thanks Eric Promislow.
214
+ http://rubyforge.org/pipermail/mechanize-users/2007-July/000157.html
215
+
216
+ === 0.6.9
217
+
218
+ * Updating UTF-8 support for urls
219
+ * Adding AREA tags to the links list.
220
+ http://rubyforge.org/pipermail/mechanize-users/2007-May/000140.html
221
+ * WWW::Mechanize#follow_meta_refresh will allow you to automatically follow
222
+ meta refresh tags. [#10032]
223
+ * Adding x-gzip to accepted content-encoding. Thanks Simon Strandgaard
224
+ http://rubyforge.org/tracker/index.php?func=detail&aid=11167&group_id=1453&atid=5711
225
+ * Added Digest Authentication support. Thanks to Ryan Davis and Eric Hodel,
226
+ you get a gold star!
227
+
228
+ === 0.6.8
229
+
230
+ * Keep alive can be shut off now with WWW::Mechanize#keep_alive
231
+ * Conditional requests can be shut off with WWW::Mechanize#conditional_requests
232
+ * Monkey patched Net::HTTP#keep_alive?
233
+ * [#9877] Moved last request time. Thanks Max Stepanov
234
+ * Added WWW::Mechanize::File#save
235
+ * Defaulting file name to URI or Content-Disposition
236
+ * Updating compatability with hpricot
237
+ * Added more unit tests
238
+
239
+ === 0.6.7
240
+
241
+ * Fixed a bug with keep-alive requests
242
+ * [#9549] fixed problem with cookie paths
243
+
244
+ === 0.6.6
245
+
246
+ * Removing hpricot overrides
247
+ * Fixed a bug where alt text can be nil. Thanks Yannick!
248
+ * Unparseable expiration dates in cookies are now treated as session cookies
249
+ * Caching connections
250
+ * Requests now default to keep alive
251
+ * [#9434] Fixed bug where html entities weren't decoded
252
+ * [#9150] Updated mechanize history to deal with redirects
253
+
254
+ === 0.6.5
255
+
256
+ * Copying headers to a hash to prevent memory leaks
257
+ * Speeding up page parsing
258
+ * Aliased fields to elements
259
+ * Adding If-Modified-Since header
260
+ * Added delete_field! to form. Thanks to Sava Chankov
261
+ * Updated uri escaping to support high order characters. Thanks to Henrik Nyh.
262
+ * Better handling relative URIs. Thanks to Henrik Nyh
263
+ * Now handles pipes in URLs
264
+ http://rubyforge.org/tracker/?func=detail&aid=7140&group_id=1453&atid=5709
265
+ * Now escaping html entities in form fields.
266
+ http://rubyforge.org/tracker/?func=detail&aid=7563&group_id=1453&atid=5709
267
+ * Added MSIE 7.0 user agent string
268
+
269
+ === 0.6.4
270
+
271
+ * Adding the "redirect_ok" method to Mechanize to stop mechanize from
272
+ following redirects.
273
+ http://rubyforge.org/tracker/index.php?func=detail&aid=6571&group_id=1453&atid=5712
274
+ * Added protected method Mechanize#set_headers so that subclasses can set
275
+ custom headers.
276
+ http://rubyforge.org/tracker/?func=detail&aid=7208&group_id=1453&atid=5712
277
+ * Aliased Page#referer to Page#page
278
+ * Fixed a bug when clicking relative urls
279
+ http://rubyforge.org/pipermail/mechanize-users/2006-November/000035.html
280
+ * Fixing a bug when bad version or max age is passed to Cookie::parse
281
+ http://rubyforge.org/pipermail/mechanize-users/2006-November/000033.html
282
+ * Fixing a bug with response codes. [#6526]
283
+ * Fixed bug [#6548]. Input type of 'button' was not being added as a button.
284
+ * Fixed bug [#7139]. REXML parser calls hpricot parser by accident
285
+
286
+ === 0.6.3
287
+
288
+ * Added keys and values methods to Form
289
+ * Added has_value? to Form
290
+ * Added a has_field? method to Form
291
+ * The add_field! method on Form now creates a field for you on the form.
292
+ Thanks to Mat Schaffer for the patch.
293
+ http://rubyforge.org/pipermail/mechanize-users/2006-November/000025.html
294
+ * Fixed a bug when form actions have html ecoded entities in them.
295
+ http://rubyforge.org/pipermail/mechanize-users/2006-October/000019.html
296
+ * Fixed a bug when links or frame sources have html encoded entities in the
297
+ href or src.
298
+ * Fixed a bug where '#' symbols are encoded
299
+ http://rubyforge.org/forum/message.php?msg_id=14747
300
+
301
+ === 0.6.2
302
+
303
+ * Added a yield to Page#form so that dealing with forms can be more DSL like.
304
+ * Added the parsed page to the ResponseCodeError so that the parsed results
305
+ can be accessed even in the event of an error.
306
+ http://rubyforge.org/pipermail/mechanize-users/2006-September/000007.html
307
+ * Updated documentation (Thanks to Paul Smith)
308
+
309
+ === 0.6.1
310
+
311
+ * Added a method to Form called "submit". Now forms can be submitted by
312
+ calling a method on the form.
313
+ * Added a click method to links
314
+ * Added an REXML pluggable parser for backwards compatability. To use it,
315
+ just do this:
316
+ agent.pluggable_parser.html = WWW::Mechanize::REXMLPage
317
+ * Fixed a bug with referrers by adding a page attribute to forms and links.
318
+ * Fixed a bug where domain names were case sensitive.
319
+ http://tenderlovemaking.com/2006/09/04/road-to-ruby-mechanize-060/#comment-53
320
+ * Fixed a bug with URI escaped links.
321
+ http://rubyforge.org/pipermail/mechanize-users/2006-September/000002.html
322
+ * Fixed a bug when options in select lists don't have a value. Thanks Dan Higham
323
+ [#5837] Code in lib/mechanize/form_elements.rb is incorrect.
324
+ * Fixed a bug with loading text in to links.
325
+ http://rubyforge.org/pipermail/mechanize-users/2006-September/000000.html
326
+
327
+ === 0.6.0
328
+
329
+ * Changed main parser to use hpricot
330
+ * Made WWW::Mechanize::Page class searchable like hpricot
331
+ * Updated WWW::Mechanize#click to support hpricot links like this:
332
+ @agent.click (page/"a").first
333
+ * Clicking a Frame is now possible:
334
+ @agent.click (page/"frame").first
335
+ * Removed deprecated attr_finder
336
+ * Removed REXML helper methods since the main parser is now hpricot
337
+ * Overhauled cookie parser to use WEBrick::Cookie
338
+
339
+ === 0.5.4
340
+
341
+ * Added WWW::Mechanize#trasact for saving history state between in a
342
+ transaction. See the EXAMPLES file. Thanks Johan Kiviniemi.
343
+ * Added support for gzip compressed pages
344
+ * Forms can now be accessed like a hash. For example, to set the value
345
+ of an input field named 'name' to "Aaron", you can do this:
346
+ form['name'] = "Aaron"
347
+ Or to get the value of a field named 'name', do this:
348
+ puts form['name']
349
+ * File uploads will now read the file specified in FileUpload#file_name
350
+ * FileUpload can use an IO object in FileUpload#file_data
351
+ * Fixed a bug with saving files on windows
352
+ * Fixed a bug with the filename being set in forms
353
+
354
+ === 0.5.3
355
+
356
+ * Mechanize#click will now act on the first element of an array. So if an
357
+ array of links is passed to WWW::Mechanize#click, the first link is clicked.
358
+ That means the syntax for clicking links is shortened and still supports
359
+ selecting a link. The following are equivalent:
360
+ agent.click page.links.first
361
+ agent.click page.links
362
+ * Fixed a bug with spaces in href's and get's
363
+ * Added a tick, untick, and click method to radio buttons so that
364
+ radiobuttons can be "clicked"
365
+ * Added a tick, untick, and click method to check boxes so that
366
+ checkboxes can be "clicked"
367
+ * Options on Select lists can now be "tick"ed, and "untick"ed.
368
+ * Fixed a potential bug conflicting with rails. Thanks Eric Kolve
369
+ * Updated log4r support for a speed increase. Thanks Yinon Bentor
370
+ * Added inspect methods and pretty printing
371
+
372
+ === 0.5.2
373
+
374
+ * Fixed a bug with input names that are nil
375
+ * Added a warning when using attr_finder because attr_finder will be deprecated
376
+ in 0.6.0 in favor of method calls. So this syntax:
377
+ @agent.links(:text => 'foo')
378
+ should be changed to this:
379
+ @agent.links.text('foo')
380
+ * Added support for selecting multiple options in select tags that support
381
+ multiple options. See WWW::Mechanize::MultiSelectList.
382
+ * New select list methods have been added, select_all, select_none.
383
+ * Options for select lists can now be "clicked" which toggles their selection,
384
+ they can be "selected" and "unselected". See WWW::Mechanize::Option
385
+ * Added a method to set multiple fields at the same time,
386
+ WWW::Mechanize::Form#set_fields. Which can be used like so:
387
+ form.set_fields( :foo => 'bar', :name => 'Aaron' )
388
+
389
+ === 0.5.1
390
+
391
+ * Fixed bug with file uploads
392
+ * Added performance tweaks to the cookie class
393
+
394
+ === 0.5.0
395
+
396
+ * Added pluggable parsers. (Thanks to Eric Kolve for the idea)
397
+ * Changed namespace so all classes are under WWW::Mechanize.
398
+ * Updating Forms so that fields can be used as accessors (Thanks Gregory Brown)
399
+ * Added WWW::Mechanize::File as default object used for unknown content types.
400
+ * Added 'save_as' method to Mechanize::File, so any page can be saved.
401
+ * Adding 'save_as' and 'load' to CookieJar so that cookies can be saved
402
+ between sessions.
403
+ * Added WWW::Mechanize::FileSaver pluggable parser to automatically save files.
404
+ * Added WWW::Mechanize::Page#title for page titles
405
+ * Added OpenSSL certificate support (Thanks Mike Dalessio)
406
+ * Removed support for body filters in favor of pluggable parsers.
407
+ * Fixed cookie bug adding a '/' when the url is missing one (Thanks Nick Dainty)
408
+
409
+ === 0.4.7
410
+
411
+ * Fixed bug with no action in forms. Thanks to Adam Wiggins
412
+ * Setting a default user-agent string
413
+ * Added house cleaning to the cookie jar so expired cookies don't stick around.
414
+ * Added new method WWW::Form#field to find the first field with a given name.
415
+ (thanks to Gregory Brown)
416
+ * Added WWW::Mechanize#get_file for fetching non text/html files
417
+
418
+ === 0.4.6
419
+
420
+ * Added support for proxies
421
+ * Added a uri field to WWW::Link
422
+ * Added a error class WWW::Mechanize::ContentTypeError
423
+ * Added image alt text to link text
424
+ * Added an visited? method to WWW::Mechanize
425
+ * Added Array#value= which will set the first value to the argument. That
426
+ allows syntax as such: form.fields.name('q').value = 'xyz'
427
+ Before it was like this: form.fields.name('q').first.value = 'xyz'
428
+
429
+ === 0.4.5
430
+
431
+ * Added support for multiple values of the same name
432
+ * Updated build_query_string to take an array of arrays (Thanks Michal Janeczek)
433
+ * Added WWW::Mechanize#body_filter= so that response bodies can be preprocessed
434
+ * Added WWW::Page#body_filter= so that response bodies can be preprocessed
435
+ * Added support for more date formats in the cookie parser
436
+ * Fixed a bug with empty select lists
437
+ * Fixing a problem with cookies not handling no spaces after semicolons
438
+
439
+ === 0.4.4
440
+
441
+ * Fixed error in method signature, basic_authetication is now basic_auth
442
+ * Fixed bug with encoding names in file uploads (Big thanks to Alex Young)
443
+ * Added options to the select list
444
+
445
+ === 0.4.3
446
+
447
+ * Added syntactic sugar for finding things
448
+ * Fixed bug with HttpOnly option in cookies
449
+ * Fixed a bug with cookie date parsing
450
+ * Defaulted dropdown lists to the first element
451
+ * Added unit tests
452
+
453
+ === 0.4.2
454
+
455
+ * Added support for iframes
456
+ * Made mechanize dependant on ruby-web rather than narf
457
+ * Added unit tests
458
+ * Fixed a bunch of warnings
459
+
460
+ === 0.4.1
461
+
462
+ * Added support for file uploading
463
+ * Added support for frames (Thanks Gabriel[mailto:leerbag@googlemail.com])
464
+ * Added more unit tests
465
+ * Fixed some bugs
466
+
467
+ === 0.4.0
468
+
469
+ * Added more unit tests
470
+ * Added a cookie jar with better cookie support, included expiration of cookies
471
+ and general cookie security.
472
+ * Updated mechanize to use built in net/http if ruby version is new enough.
473
+ * Added support for meta refresh tags
474
+ * Defaulted form actions to 'GET'
475
+ * Fixed various bugs
476
+ * Added more unit tests
477
+ * Added a response code exception
478
+ * Thanks to Brian Ellin (brianellin@gmail.com) for:
479
+ Added support for CA files, and support for 301 response codes
480
+