mechanize 1.0.1.beta.20110107104205 → 2.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mechanize might be problematic. Click here for more details.

Files changed (89) hide show
  1. data.tar.gz.sig +2 -0
  2. data/{lib/mechanize/chain/post_connect_hook.rb → .gemtest} +0 -0
  3. data/CHANGELOG.rdoc +51 -6
  4. data/EXAMPLES.rdoc +5 -3
  5. data/GUIDE.rdoc +72 -32
  6. data/LICENSE.rdoc +20 -340
  7. data/Manifest.txt +20 -27
  8. data/README.rdoc +12 -9
  9. data/Rakefile +5 -2
  10. data/examples/spider.rb +13 -2
  11. data/lib/mechanize.rb +545 -267
  12. data/lib/mechanize/content_type_error.rb +1 -1
  13. data/lib/mechanize/cookie.rb +72 -65
  14. data/lib/mechanize/cookie_jar.rb +197 -148
  15. data/lib/mechanize/element_matcher.rb +35 -0
  16. data/lib/mechanize/file.rb +3 -1
  17. data/lib/mechanize/file_connection.rb +17 -0
  18. data/lib/mechanize/file_request.rb +26 -0
  19. data/lib/mechanize/file_response.rb +61 -47
  20. data/lib/mechanize/form.rb +57 -58
  21. data/lib/mechanize/form/image_button.rb +2 -3
  22. data/lib/mechanize/form/multi_select_list.rb +71 -55
  23. data/lib/mechanize/form/select_list.rb +34 -62
  24. data/lib/mechanize/monkey_patch.rb +13 -11
  25. data/lib/mechanize/page.rb +277 -270
  26. data/lib/mechanize/page/image.rb +6 -2
  27. data/lib/mechanize/redirect_limit_reached_error.rb +1 -1
  28. data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -1
  29. data/lib/mechanize/response_code_error.rb +3 -3
  30. data/lib/mechanize/unsupported_scheme_error.rb +1 -1
  31. data/lib/mechanize/uri_resolver.rb +82 -0
  32. data/lib/mechanize/util.rb +76 -60
  33. data/test/helper.rb +35 -5
  34. data/test/htdocs/dir with spaces/foo.html +1 -0
  35. data/test/htdocs/rails_3_encoding_hack_form_test.html +27 -0
  36. data/test/htdocs/tc_base_images.html +10 -0
  37. data/test/htdocs/tc_images.html +8 -0
  38. data/test/htdocs/test_click.html +11 -0
  39. data/test/servlets.rb +3 -2
  40. data/test/test_authenticate.rb +5 -5
  41. data/test/test_errors.rb +8 -8
  42. data/test/test_follow_meta.rb +4 -4
  43. data/test/test_form_as_hash.rb +4 -4
  44. data/test/test_forms.rb +3 -7
  45. data/test/test_hash_api.rb +2 -2
  46. data/test/test_headers.rb +1 -1
  47. data/test/test_images.rb +19 -0
  48. data/test/test_mech.rb +6 -6
  49. data/test/test_mechanize.rb +687 -0
  50. data/test/{test_cookie_class.rb → test_mechanize_cookie.rb} +52 -45
  51. data/test/test_mechanize_cookie_jar.rb +400 -0
  52. data/test/test_mechanize_file.rb +7 -1
  53. data/test/test_mechanize_file_request.rb +19 -0
  54. data/test/test_mechanize_file_response.rb +21 -0
  55. data/test/test_mechanize_form_image_button.rb +12 -0
  56. data/test/test_mechanize_page.rb +165 -0
  57. data/test/test_mechanize_uri_resolver.rb +29 -0
  58. data/test/{test_util.rb → test_mechanize_util.rb} +1 -1
  59. data/test/test_multi_select.rb +12 -0
  60. data/test/test_post_form.rb +7 -0
  61. data/test/test_redirect_verb_handling.rb +6 -6
  62. data/test/test_scheme.rb +0 -7
  63. data/test/test_verbs.rb +3 -3
  64. metadata +106 -72
  65. metadata.gz.sig +0 -0
  66. data/lib/mechanize/chain.rb +0 -36
  67. data/lib/mechanize/chain/auth_headers.rb +0 -78
  68. data/lib/mechanize/chain/body_decoding_handler.rb +0 -50
  69. data/lib/mechanize/chain/connection_resolver.rb +0 -28
  70. data/lib/mechanize/chain/custom_headers.rb +0 -21
  71. data/lib/mechanize/chain/handler.rb +0 -9
  72. data/lib/mechanize/chain/header_resolver.rb +0 -48
  73. data/lib/mechanize/chain/parameter_resolver.rb +0 -22
  74. data/lib/mechanize/chain/pre_connect_hook.rb +0 -20
  75. data/lib/mechanize/chain/request_resolver.rb +0 -31
  76. data/lib/mechanize/chain/response_body_parser.rb +0 -36
  77. data/lib/mechanize/chain/response_header_handler.rb +0 -34
  78. data/lib/mechanize/chain/response_reader.rb +0 -39
  79. data/lib/mechanize/chain/ssl_resolver.rb +0 -40
  80. data/lib/mechanize/chain/uri_resolver.rb +0 -75
  81. data/test/chain/test_argument_validator.rb +0 -14
  82. data/test/chain/test_auth_headers.rb +0 -25
  83. data/test/chain/test_custom_headers.rb +0 -18
  84. data/test/chain/test_header_resolver.rb +0 -27
  85. data/test/chain/test_parameter_resolver.rb +0 -35
  86. data/test/chain/test_request_resolver.rb +0 -29
  87. data/test/chain/test_response_reader.rb +0 -24
  88. data/test/test_cookie_jar.rb +0 -324
  89. data/test/test_page.rb +0 -124
@@ -1,6 +1,6 @@
1
1
  require "helper"
2
2
 
3
- class MechanizeFileTest < Test::Unit::TestCase
3
+ class TestMechanizeFile < Test::Unit::TestCase
4
4
  def test_content_disposition
5
5
  file = Mechanize::File.new(
6
6
  URI.parse('http://localhost/foo'),
@@ -21,6 +21,12 @@ class MechanizeFileTest < Test::Unit::TestCase
21
21
  assert_equal('genome.jpeg', file.filename)
22
22
  end
23
23
 
24
+ def test_content_disposition_double_semicolon
25
+ agent = Mechanize.new
26
+ page = agent.get("http://localhost/http_headers?content-disposition=#{CGI.escape('attachment;; filename=fooooo')}")
27
+ assert page.parser
28
+ end
29
+
24
30
  def test_from_uri
25
31
  file = Mechanize::File.new(
26
32
  URI.parse('http://localhost/foo'),
@@ -0,0 +1,19 @@
1
+ require 'helper'
2
+
3
+ class TestMechanizeFileRequest < Test::Unit::TestCase
4
+
5
+ def test_initialize
6
+ uri = URI.parse 'http://example/'
7
+
8
+ r = Mechanize::FileRequest.new uri
9
+
10
+ assert_equal uri, r.uri
11
+ assert_equal '/', r.path
12
+
13
+ assert_respond_to r, :[]=
14
+ assert_respond_to r, :add_field
15
+ assert_respond_to r, :each_header
16
+ end
17
+
18
+ end
19
+
@@ -0,0 +1,21 @@
1
+ require 'helper'
2
+
3
+ class TestMechanizeFileConnection < Test::Unit::TestCase
4
+
5
+ def test_request
6
+ uri = URI.parse "file://#{File.expand_path __FILE__}"
7
+ conn = Mechanize::FileConnection.new
8
+
9
+ body = ''
10
+
11
+ conn.request uri, nil do |response|
12
+ response.read_body do |part|
13
+ body << part
14
+ end
15
+ end
16
+
17
+ assert_equal File.read(__FILE__), body
18
+ end
19
+
20
+ end
21
+
@@ -0,0 +1,12 @@
1
+ require 'helper'
2
+
3
+ class TestMechanizeFormImageButton < Test::Unit::TestCase
4
+
5
+ def test_query_value
6
+ button = Mechanize::Form::ImageButton.new 'name' => 'image_button'
7
+
8
+ assert_equal [%w[image_button.x 0], %w[image_button.y 0]],
9
+ button.query_value
10
+ end
11
+ end
12
+
@@ -0,0 +1,165 @@
1
+ # coding: utf-8
2
+
3
+ require 'helper'
4
+ require 'cgi'
5
+
6
+ class TestMechanizePage < Test::Unit::TestCase
7
+
8
+ WINDOWS_1255 = <<-HTML
9
+ <meta http-equiv="content-type" content="text/html; charset=windows-1255">
10
+ <title>hi</title>
11
+ HTML
12
+
13
+ BAD = <<-HTML
14
+ <meta http-equiv="content-type" content="text/html; charset=windows-1255">
15
+ <title>Bia\xB3ystok</title>
16
+ HTML
17
+ BAD.force_encoding Encoding::BINARY if defined? Encoding
18
+
19
+ SJIS_TITLE = "\x83\x65\x83\x58\x83\x67"
20
+
21
+ SJIS_AFTER_TITLE = <<-HTML
22
+ <title>#{SJIS_TITLE}</title>
23
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
24
+ HTML
25
+
26
+ SJIS_AFTER_TITLE.force_encoding Encoding::BINARY if defined? Encoding
27
+
28
+ SJIS_BAD_AFTER_TITLE = <<-HTML
29
+ <title>#{SJIS_TITLE}</title>
30
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
31
+ HTML
32
+
33
+ SJIS_BAD_AFTER_TITLE.force_encoding Encoding::BINARY if defined? Encoding
34
+
35
+ UTF8_TITLE = 'テスト'
36
+ UTF8 = <<-HTML
37
+ <title>#{UTF8_TITLE}</title>
38
+ <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
39
+ HTML
40
+
41
+ def setup
42
+ @agent = Mechanize.new
43
+ @uri = URI.parse 'http://example'
44
+ @res = { 'content-type' => 'text/html' }
45
+ @body = '<title>hi</title>'
46
+ end
47
+
48
+ def util_page body = @body, res = @res
49
+ Mechanize::Page.new @uri, res, body, 200, @agent
50
+ end
51
+
52
+ def test_charset
53
+ charset = util_page.charset 'text/html;charset=UTF-8'
54
+
55
+ assert_equal 'UTF-8', charset
56
+ end
57
+
58
+ def test_encoding
59
+ page = util_page WINDOWS_1255
60
+
61
+ assert_equal 'windows-1255', page.encoding
62
+ end
63
+
64
+ def test_encoding_charset_after_title
65
+ page = util_page SJIS_AFTER_TITLE
66
+
67
+ assert_equal [], page.parser.errors
68
+
69
+ assert_equal 'Shift_JIS', page.encoding
70
+ end
71
+
72
+ def test_encoding_charset_after_title_bad
73
+ page = util_page UTF8
74
+
75
+ assert_equal [], page.parser.errors
76
+
77
+ assert_equal 'UTF-8', page.encoding
78
+ end
79
+
80
+ def test_encoding_charset_after_title_double_bad
81
+ page = util_page SJIS_BAD_AFTER_TITLE
82
+
83
+ assert_equal [], page.parser.errors
84
+
85
+ assert_equal 'SHIFT_JIS', page.encoding
86
+ end
87
+
88
+ def test_encoding_equals
89
+ page = util_page
90
+
91
+ page.encoding = 'UTF-8'
92
+
93
+ assert_equal 'UTF-8', page.encoding
94
+ assert_equal 'UTF-8', page.parser.encoding
95
+ end
96
+
97
+ def test_encoding_equals_before_parser
98
+ # document has a bad encoding information - windows-1255
99
+ page = util_page BAD
100
+
101
+ # encoding is wrong, so user wants to force ISO-8859-2
102
+ page.encoding = 'ISO-8859-2'
103
+
104
+ assert_equal [], page.parser.errors
105
+ assert_equal 'ISO-8859-2', page.encoding
106
+ assert_equal 'ISO-8859-2', page.parser.encoding
107
+ end
108
+
109
+ def test_encoding_equals_after_parser
110
+ # document has a bad encoding information - windows-1255
111
+ page = util_page BAD
112
+ page.parser
113
+
114
+ # autodetection sets encoding to windows-1255
115
+ assert_equal 'windows-1255', page.encoding
116
+
117
+ # encoding is wrong, so user wants to force ISO-8859-2
118
+ page.encoding = 'ISO-8859-2'
119
+
120
+ assert_equal [], page.parser.errors
121
+ assert_equal 'ISO-8859-2', page.encoding
122
+ assert_equal 'ISO-8859-2', page.parser.encoding
123
+ end
124
+
125
+ def test_title
126
+ page = util_page
127
+
128
+ assert_equal('hi', page.title)
129
+ end
130
+
131
+ def test_title_none
132
+ page = util_page '' # invalid HTML
133
+
134
+ assert_equal(nil, page.title)
135
+ end
136
+
137
+ def test_page_decoded_with_charset
138
+ page = util_page @body, 'content-type' => 'text/html; charset=EUC-JP'
139
+
140
+ assert_equal 'EUC-JP', page.encoding
141
+ assert_equal 'EUC-JP', page.parser.encoding
142
+ end
143
+
144
+ def test_form
145
+ page = @agent.get("http://localhost/tc_form_action.html")
146
+
147
+ form = page.form(:name => 'post_form1')
148
+ assert form
149
+ yielded = false
150
+
151
+ form = page.form(:name => 'post_form1') { |f|
152
+ yielded = true
153
+ assert f
154
+ assert_equal(form, f)
155
+ }
156
+
157
+ assert yielded
158
+
159
+ form_by_action = page.form(:action => '/form_post?a=b&b=c')
160
+ assert form_by_action
161
+ assert_equal(form, form_by_action)
162
+ end
163
+
164
+ end
165
+
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+
3
+ require 'helper'
4
+ require 'mechanize/uri_resolver'
5
+
6
+ class TestMechanizeURIResolver < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @r = Mechanize::URIResolver.new
10
+ end
11
+
12
+ def test_resolve_bad_uri
13
+ e = assert_raises ArgumentError do
14
+ @r.resolve 'google'
15
+ end
16
+
17
+ assert_equal 'absolute URL needed (not google)', e.message
18
+ end
19
+
20
+ def test_resolve_utf8
21
+ uri = 'http://example?q=ü'
22
+
23
+ resolved = @r.resolve uri
24
+
25
+ assert_equal '/?q=%C3%BC', resolved.request_uri
26
+ end
27
+
28
+ end
29
+
@@ -1,6 +1,6 @@
1
1
  require "helper"
2
2
 
3
- class TestUtil < Test::Unit::TestCase
3
+ class TestMechanizeUtil < Test::Unit::TestCase
4
4
  def test_from_native_charset
5
5
  assert_equal 'foo', Mechanize::Util.from_native_charset('foo', nil)
6
6
  end
@@ -3,6 +3,18 @@ require "helper"
3
3
  class MultiSelectTest < Test::Unit::TestCase
4
4
  def setup
5
5
  @agent = Mechanize.new
6
+ @page = @agent.get("http://localhost/form_multi_select.html")
7
+ @form = @page.forms.first
8
+ end
9
+
10
+ def test_option_with
11
+ o = @form.field_with(:name => 'list').option_with(:value => '1')
12
+ assert_equal '1', o.value
13
+ end
14
+
15
+ def test_options_with
16
+ os = @form.field_with(:name => 'list').options_with(:value => /1|2/)
17
+ assert_equal ['1', '2'].sort, os.map { |x| x.value }.sort
6
18
  end
7
19
 
8
20
  def test_select_none
@@ -15,6 +15,13 @@ class PostForm < Test::Unit::TestCase
15
15
  )
16
16
  end
17
17
 
18
+ def test_post_form_json
19
+ page = @agent.post "http://localhost/form_post",
20
+ 'json' => '["&quot;"]'
21
+
22
+ assert page.links.find { |l| l.text == 'json:["""]' }
23
+ end
24
+
18
25
  def test_post_form_multival
19
26
  page = @agent.post("http://localhost/form_post",
20
27
  [ ['gender', 'female'],
@@ -14,36 +14,36 @@ class TestRedirectNotGetOrHead < Test::Unit::TestCase
14
14
  def test_head_redirect_results_in_head_request
15
15
  page = @agent.head('http://localhost/redirect')
16
16
  assert_equal(page.uri.to_s, 'http://localhost/verb')
17
- assert_equal(page.body, "method: HEAD")
17
+ assert_equal 'HEAD', page.header['X-Request-Method']
18
18
  end
19
19
 
20
20
  def test_get_takes_a_verb
21
21
  page = @agent.get(:url => 'http://localhost/redirect', :verb => :head)
22
22
  assert_equal(page.uri.to_s, 'http://localhost/verb')
23
- assert_equal(page.body, "method: HEAD")
23
+ assert_equal 'HEAD', page.header['X-Request-Method']
24
24
  end
25
25
 
26
26
  def test_get_redirect_results_in_get_request
27
27
  page = @agent.get('http://localhost/redirect')
28
28
  assert_equal(page.uri.to_s, 'http://localhost/verb')
29
- assert_equal(page.body, "method: GET")
29
+ assert_equal 'GET', page.header['X-Request-Method']
30
30
  end
31
31
 
32
32
  def test_post_redirect_results_in_get_request
33
33
  page = @agent.post('http://localhost/redirect')
34
34
  assert_equal(page.uri.to_s, 'http://localhost/verb')
35
- assert_equal(page.body, "method: GET")
35
+ assert_equal 'GET', page.header['X-Request-Method']
36
36
  end
37
37
 
38
38
  def test_put_redirect_results_in_get_request
39
39
  page = @agent.put('http://localhost/redirect', 'foo')
40
40
  assert_equal(page.uri.to_s, 'http://localhost/verb')
41
- assert_equal(page.body, "method: GET")
41
+ assert_equal 'GET', page.header['X-Request-Method']
42
42
  end
43
43
 
44
44
  def test_delete_redirect_results_in_get_request
45
45
  page = @agent.delete('http://localhost/redirect')
46
46
  assert_equal(page.uri.to_s, 'http://localhost/verb')
47
- assert_equal(page.body, "method: GET")
47
+ assert_equal 'GET', page.header['X-Request-Method']
48
48
  end
49
49
  end
@@ -30,13 +30,6 @@ class SchemeTest < Test::Unit::TestCase
30
30
  assert_kind_of(Mechanize::Page, page)
31
31
  end
32
32
 
33
- def test_file_scheme_with_embedded_spaces
34
- f = File.expand_path(File.join(File.dirname(__FILE__), "htdocs/dir with spaces/foo.html"))
35
- page = @agent.get("file://#{f}")
36
- assert_equal(File.read(f), page.body)
37
- assert_kind_of(Mechanize::Page, page)
38
- end
39
-
40
33
  def test_click_file_link
41
34
  f = File.expand_path(File.join(File.dirname(__FILE__), "htdocs"))
42
35
  page = @agent.get("file://#{f}")
@@ -8,18 +8,18 @@ class VerbsTest < Test::Unit::TestCase
8
8
  def test_put
9
9
  page = @agent.put('http://localhost/verb', 'foo')
10
10
  assert_equal 1, @agent.history.length
11
- assert_equal('method: PUT', page.body)
11
+ assert_equal 'PUT', page.header['X-Request-Method']
12
12
  end
13
13
 
14
14
  def test_delete
15
15
  page = @agent.delete('http://localhost/verb', { 'q' => 'foo' })
16
16
  assert_equal 1, @agent.history.length
17
- assert_equal('method: DELETE', page.body)
17
+ assert_equal 'DELETE', page.header['X-Request-Method']
18
18
  end
19
19
 
20
20
  def test_head
21
21
  page = @agent.head('http://localhost/verb', { 'q' => 'foo' })
22
22
  assert_equal 0, @agent.history.length
23
- assert_equal('method: HEAD', page.body)
23
+ assert_equal 'HEAD', page.header['X-Request-Method']
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,25 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mechanize
3
3
  version: !ruby/object:Gem::Version
4
- hash: 40220156341521
5
- prerelease: true
4
+ hash: 1923831931
5
+ prerelease:
6
6
  segments:
7
- - 1
7
+ - 2
8
8
  - 0
9
+ - pre
9
10
  - 1
10
- - beta
11
- - 20110107104205
12
- version: 1.0.1.beta.20110107104205
11
+ version: 2.0.pre.1
13
12
  platform: ruby
14
13
  authors:
14
+ - Eric Hodel
15
15
  - Aaron Patterson
16
16
  - Mike Dalessio
17
17
  autorequire:
18
18
  bindir: bin
19
- cert_chain: []
19
+ cert_chain:
20
+ - |
21
+ -----BEGIN CERTIFICATE-----
22
+ MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMRAwDgYDVQQDDAdkcmJy
23
+ YWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZFgNu
24
+ ZXQwHhcNMDcxMjIxMDIwNDE0WhcNMDgxMjIwMDIwNDE0WjBBMRAwDgYDVQQDDAdk
25
+ cmJyYWluMRgwFgYKCZImiZPyLGQBGRYIc2VnbWVudDcxEzARBgoJkiaJk/IsZAEZ
26
+ FgNuZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbbgLrGLGIDE76
27
+ LV/cvxdEzCuYuS3oG9PrSZnuDweySUfdp/so0cDq+j8bqy6OzZSw07gdjwFMSd6J
28
+ U5ddZCVywn5nnAQ+Ui7jMW54CYt5/H6f2US6U0hQOjJR6cpfiymgxGdfyTiVcvTm
29
+ Gj/okWrQl0NjYOYBpDi+9PPmaH2RmLJu0dB/NylsDnW5j6yN1BEI8MfJRR+HRKZY
30
+ mUtgzBwF1V4KIZQ8EuL6I/nHVu07i6IkrpAgxpXUfdJQJi0oZAqXurAV3yTxkFwd
31
+ g62YrrW26mDe+pZBzR6bpLE+PmXCzz7UxUq3AE0gPHbiMXie3EFE0oxnsU3lIduh
32
+ sCANiQ8BAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
33
+ BBS5k4Z75VSpdM0AclG2UvzFA/VW5DANBgkqhkiG9w0BAQUFAAOCAQEAHagT4lfX
34
+ kP/hDaiwGct7XPuVGbrOsKRVD59FF5kETBxEc9UQ1clKWngf8JoVuEoKD774dW19
35
+ bU0GOVWO+J6FMmT/Cp7nuFJ79egMf/gy4gfUfQMuvfcr6DvZUPIs9P/TlK59iMYF
36
+ DIOQ3DxdF3rMzztNUCizN4taVscEsjCcgW6WkUJnGdqlu3OHWpQxZBJkBTjPCoc6
37
+ UW6on70SFPmAy/5Cq0OJNGEWBfgD9q7rrs/X8GGwUWqXb85RXnUVi/P8Up75E0ag
38
+ 14jEc90kN+C7oI/AGCBN0j6JnEtYIEJZibjjDJTSMWlUKKkj30kq7hlUC2CepJ4v
39
+ x52qPcexcYZR7w==
40
+ -----END CERTIFICATE-----
20
41
 
21
- date: 2011-01-07 00:00:00 -08:00
22
- default_executable:
42
+ date: 2011-04-10 00:00:00 Z
23
43
  dependencies:
24
44
  - !ruby/object:Gem::Dependency
25
45
  name: nokogiri
@@ -27,20 +47,34 @@ dependencies:
27
47
  requirement: &id001 !ruby/object:Gem::Requirement
28
48
  none: false
29
49
  requirements:
30
- - - ">="
50
+ - - ~>
31
51
  - !ruby/object:Gem::Version
32
- hash: 29
52
+ hash: 7
33
53
  segments:
34
54
  - 1
35
- - 2
36
- - 1
37
- version: 1.2.1
55
+ - 4
56
+ version: "1.4"
38
57
  type: :runtime
39
58
  version_requirements: *id001
40
59
  - !ruby/object:Gem::Dependency
41
60
  name: net-http-persistent
42
61
  prerelease: false
43
62
  requirement: &id002 !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ hash: 3
68
+ segments:
69
+ - 1
70
+ - 6
71
+ version: "1.6"
72
+ type: :runtime
73
+ version_requirements: *id002
74
+ - !ruby/object:Gem::Dependency
75
+ name: net-http-digest_auth
76
+ prerelease: false
77
+ requirement: &id003 !ruby/object:Gem::Requirement
44
78
  none: false
45
79
  requirements:
46
80
  - - ~>
@@ -50,31 +84,40 @@ dependencies:
50
84
  - 1
51
85
  - 1
52
86
  version: "1.1"
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ hash: 17
90
+ segments:
91
+ - 1
92
+ - 1
93
+ - 1
94
+ version: 1.1.1
53
95
  type: :runtime
54
- version_requirements: *id002
96
+ version_requirements: *id003
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: hoe
57
99
  prerelease: false
58
- requirement: &id003 !ruby/object:Gem::Requirement
100
+ requirement: &id004 !ruby/object:Gem::Requirement
59
101
  none: false
60
102
  requirements:
61
103
  - - ">="
62
104
  - !ruby/object:Gem::Version
63
- hash: 47
105
+ hash: 35
64
106
  segments:
65
107
  - 2
66
- - 8
67
- - 0
68
- version: 2.8.0
108
+ - 9
109
+ - 4
110
+ version: 2.9.4
69
111
  type: :development
70
- version_requirements: *id003
112
+ version_requirements: *id004
71
113
  description: |-
72
- The Mechanize library is used for automating interaction with websites.
114
+ The Mechanize library is used for automating interaction with websites.
73
115
  Mechanize automatically stores and sends cookies, follows redirects,
74
116
  can follow links, and submit forms. Form fields can be populated and
75
117
  submitted. Mechanize also keeps track of the sites that you have visited as
76
118
  a history.
77
119
  email:
120
+ - drbrain@segment7.net
78
121
  - aaronp@rubyforge.org
79
122
  - mike.dalessio@gmail.com
80
123
  executables: []
@@ -104,26 +147,13 @@ files:
104
147
  - examples/rubyforge.rb
105
148
  - examples/spider.rb
106
149
  - lib/mechanize.rb
107
- - lib/mechanize/chain.rb
108
- - lib/mechanize/chain/auth_headers.rb
109
- - lib/mechanize/chain/body_decoding_handler.rb
110
- - lib/mechanize/chain/connection_resolver.rb
111
- - lib/mechanize/chain/custom_headers.rb
112
- - lib/mechanize/chain/handler.rb
113
- - lib/mechanize/chain/header_resolver.rb
114
- - lib/mechanize/chain/parameter_resolver.rb
115
- - lib/mechanize/chain/post_connect_hook.rb
116
- - lib/mechanize/chain/pre_connect_hook.rb
117
- - lib/mechanize/chain/request_resolver.rb
118
- - lib/mechanize/chain/response_body_parser.rb
119
- - lib/mechanize/chain/response_header_handler.rb
120
- - lib/mechanize/chain/response_reader.rb
121
- - lib/mechanize/chain/ssl_resolver.rb
122
- - lib/mechanize/chain/uri_resolver.rb
123
150
  - lib/mechanize/content_type_error.rb
124
151
  - lib/mechanize/cookie.rb
125
152
  - lib/mechanize/cookie_jar.rb
153
+ - lib/mechanize/element_matcher.rb
126
154
  - lib/mechanize/file.rb
155
+ - lib/mechanize/file_connection.rb
156
+ - lib/mechanize/file_request.rb
127
157
  - lib/mechanize/file_response.rb
128
158
  - lib/mechanize/file_saver.rb
129
159
  - lib/mechanize/form.rb
@@ -152,14 +182,8 @@ files:
152
182
  - lib/mechanize/redirect_not_get_or_head_error.rb
153
183
  - lib/mechanize/response_code_error.rb
154
184
  - lib/mechanize/unsupported_scheme_error.rb
185
+ - lib/mechanize/uri_resolver.rb
155
186
  - lib/mechanize/util.rb
156
- - test/chain/test_argument_validator.rb
157
- - test/chain/test_auth_headers.rb
158
- - test/chain/test_custom_headers.rb
159
- - test/chain/test_header_resolver.rb
160
- - test/chain/test_parameter_resolver.rb
161
- - test/chain/test_request_resolver.rb
162
- - test/chain/test_response_reader.rb
163
187
  - test/data/htpasswd
164
188
  - test/data/server.crt
165
189
  - test/data/server.csr
@@ -169,6 +193,7 @@ files:
169
193
  - test/htdocs/alt_text.html
170
194
  - test/htdocs/bad_form_test.html
171
195
  - test/htdocs/button.jpg
196
+ - test/htdocs/dir with spaces/foo.html
172
197
  - test/htdocs/empty_form.html
173
198
  - test/htdocs/file_upload.html
174
199
  - test/htdocs/find_link.html
@@ -189,9 +214,11 @@ files:
189
214
  - test/htdocs/link with space.html
190
215
  - test/htdocs/meta_cookie.html
191
216
  - test/htdocs/no_title_test.html
217
+ - test/htdocs/rails_3_encoding_hack_form_test.html
192
218
  - test/htdocs/relative/tc_relative_links.html
193
219
  - test/htdocs/tc_bad_charset.html
194
220
  - test/htdocs/tc_bad_links.html
221
+ - test/htdocs/tc_base_images.html
195
222
  - test/htdocs/tc_base_link.html
196
223
  - test/htdocs/tc_blank_form.html
197
224
  - test/htdocs/tc_charset.html
@@ -200,6 +227,7 @@ files:
200
227
  - test/htdocs/tc_field_precedence.html
201
228
  - test/htdocs/tc_follow_meta.html
202
229
  - test/htdocs/tc_form_action.html
230
+ - test/htdocs/tc_images.html
203
231
  - test/htdocs/tc_links.html
204
232
  - test/htdocs/tc_meta_in_body.html
205
233
  - test/htdocs/tc_no_attributes.html
@@ -209,6 +237,7 @@ files:
209
237
  - test/htdocs/tc_relative_links.html
210
238
  - test/htdocs/tc_textarea.html
211
239
  - test/htdocs/test_bad_encoding.html
240
+ - test/htdocs/test_click.html
212
241
  - test/htdocs/unusual______.html
213
242
  - test/servlets.rb
214
243
  - test/ssl_server.rb
@@ -217,8 +246,6 @@ files:
217
246
  - test/test_blank_form.rb
218
247
  - test/test_checkboxes.rb
219
248
  - test/test_content_type.rb
220
- - test/test_cookie_class.rb
221
- - test/test_cookie_jar.rb
222
249
  - test/test_cookies.rb
223
250
  - test/test_encoded_links.rb
224
251
  - test/test_errors.rb
@@ -233,19 +260,29 @@ files:
233
260
  - test/test_get_headers.rb
234
261
  - test/test_gzipping.rb
235
262
  - test/test_hash_api.rb
263
+ - test/test_headers.rb
236
264
  - test/test_history.rb
237
265
  - test/test_history_added.rb
238
266
  - test/test_html_unscape_forms.rb
239
267
  - test/test_if_modified_since.rb
268
+ - test/test_images.rb
240
269
  - test/test_links.rb
241
270
  - test/test_mech.rb
242
271
  - test/test_mech_proxy.rb
272
+ - test/test_mechanize.rb
273
+ - test/test_mechanize_cookie.rb
274
+ - test/test_mechanize_cookie_jar.rb
243
275
  - test/test_mechanize_file.rb
276
+ - test/test_mechanize_file_request.rb
277
+ - test/test_mechanize_file_response.rb
278
+ - test/test_mechanize_form_image_button.rb
279
+ - test/test_mechanize_page.rb
280
+ - test/test_mechanize_uri_resolver.rb
281
+ - test/test_mechanize_util.rb
244
282
  - test/test_meta.rb
245
283
  - test/test_multi_select.rb
246
284
  - test/test_no_attributes.rb
247
285
  - test/test_option.rb
248
- - test/test_page.rb
249
286
  - test/test_pluggable_parser.rb
250
287
  - test/test_post_form.rb
251
288
  - test/test_pretty_print.rb
@@ -267,10 +304,8 @@ files:
267
304
  - test/test_subclass.rb
268
305
  - test/test_textarea.rb
269
306
  - test/test_upload.rb
270
- - test/test_util.rb
271
307
  - test/test_verbs.rb
272
- - test/test_headers.rb
273
- has_rdoc: true
308
+ - .gemtest
274
309
  homepage: http://mechanize.rubyforge.org
275
310
  licenses: []
276
311
 
@@ -285,43 +320,34 @@ required_ruby_version: !ruby/object:Gem::Requirement
285
320
  requirements:
286
321
  - - ">="
287
322
  - !ruby/object:Gem::Version
288
- hash: 3
323
+ hash: 57
289
324
  segments:
290
- - 0
291
- version: "0"
325
+ - 1
326
+ - 8
327
+ - 7
328
+ version: 1.8.7
292
329
  required_rubygems_version: !ruby/object:Gem::Requirement
293
330
  none: false
294
331
  requirements:
295
- - - ">"
332
+ - - ">="
296
333
  - !ruby/object:Gem::Version
297
- hash: 25
334
+ hash: 3
298
335
  segments:
299
- - 1
300
- - 3
301
- - 1
302
- version: 1.3.1
336
+ - 0
337
+ version: "0"
303
338
  requirements: []
304
339
 
305
340
  rubyforge_project: mechanize
306
- rubygems_version: 1.3.7
341
+ rubygems_version: 1.7.2
307
342
  signing_key:
308
343
  specification_version: 3
309
344
  summary: The Mechanize library is used for automating interaction with websites
310
345
  test_files:
311
- - test/chain/test_argument_validator.rb
312
- - test/chain/test_auth_headers.rb
313
- - test/chain/test_custom_headers.rb
314
- - test/chain/test_header_resolver.rb
315
- - test/chain/test_parameter_resolver.rb
316
- - test/chain/test_request_resolver.rb
317
- - test/chain/test_response_reader.rb
318
346
  - test/test_authenticate.rb
319
347
  - test/test_bad_links.rb
320
348
  - test/test_blank_form.rb
321
349
  - test/test_checkboxes.rb
322
350
  - test/test_content_type.rb
323
- - test/test_cookie_class.rb
324
- - test/test_cookie_jar.rb
325
351
  - test/test_cookies.rb
326
352
  - test/test_encoded_links.rb
327
353
  - test/test_errors.rb
@@ -341,15 +367,24 @@ test_files:
341
367
  - test/test_history_added.rb
342
368
  - test/test_html_unscape_forms.rb
343
369
  - test/test_if_modified_since.rb
370
+ - test/test_images.rb
344
371
  - test/test_links.rb
345
372
  - test/test_mech.rb
346
373
  - test/test_mech_proxy.rb
374
+ - test/test_mechanize.rb
375
+ - test/test_mechanize_cookie.rb
376
+ - test/test_mechanize_cookie_jar.rb
347
377
  - test/test_mechanize_file.rb
378
+ - test/test_mechanize_file_request.rb
379
+ - test/test_mechanize_file_response.rb
380
+ - test/test_mechanize_form_image_button.rb
381
+ - test/test_mechanize_page.rb
382
+ - test/test_mechanize_uri_resolver.rb
383
+ - test/test_mechanize_util.rb
348
384
  - test/test_meta.rb
349
385
  - test/test_multi_select.rb
350
386
  - test/test_no_attributes.rb
351
387
  - test/test_option.rb
352
- - test/test_page.rb
353
388
  - test/test_pluggable_parser.rb
354
389
  - test/test_post_form.rb
355
390
  - test/test_pretty_print.rb
@@ -371,5 +406,4 @@ test_files:
371
406
  - test/test_subclass.rb
372
407
  - test/test_textarea.rb
373
408
  - test/test_upload.rb
374
- - test/test_util.rb
375
409
  - test/test_verbs.rb