mechanize 2.7.7 → 2.8.3

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +11 -0
  3. data/.github/workflows/ci-test.yml +36 -8
  4. data/.yardopts +8 -0
  5. data/{CHANGELOG.rdoc → CHANGELOG.md} +117 -88
  6. data/Gemfile +1 -6
  7. data/{LICENSE.rdoc → LICENSE.txt} +4 -0
  8. data/README.md +77 -0
  9. data/Rakefile +18 -3
  10. data/lib/mechanize/chunked_termination_error.rb +1 -0
  11. data/lib/mechanize/content_type_error.rb +1 -0
  12. data/lib/mechanize/cookie.rb +1 -13
  13. data/lib/mechanize/cookie_jar.rb +2 -10
  14. data/lib/mechanize/directory_saver.rb +1 -0
  15. data/lib/mechanize/download.rb +1 -0
  16. data/lib/mechanize/element_matcher.rb +1 -0
  17. data/lib/mechanize/element_not_found_error.rb +1 -0
  18. data/lib/mechanize/file.rb +1 -0
  19. data/lib/mechanize/file_connection.rb +5 -3
  20. data/lib/mechanize/file_request.rb +1 -0
  21. data/lib/mechanize/file_response.rb +3 -0
  22. data/lib/mechanize/file_saver.rb +1 -0
  23. data/lib/mechanize/form/button.rb +1 -0
  24. data/lib/mechanize/form/check_box.rb +1 -0
  25. data/lib/mechanize/form/field.rb +1 -0
  26. data/lib/mechanize/form/file_upload.rb +1 -0
  27. data/lib/mechanize/form/hidden.rb +1 -0
  28. data/lib/mechanize/form/image_button.rb +1 -0
  29. data/lib/mechanize/form/keygen.rb +1 -0
  30. data/lib/mechanize/form/multi_select_list.rb +1 -0
  31. data/lib/mechanize/form/option.rb +1 -0
  32. data/lib/mechanize/form/radio_button.rb +1 -0
  33. data/lib/mechanize/form/reset.rb +1 -0
  34. data/lib/mechanize/form/select_list.rb +1 -0
  35. data/lib/mechanize/form/submit.rb +1 -0
  36. data/lib/mechanize/form/text.rb +1 -0
  37. data/lib/mechanize/form/textarea.rb +1 -0
  38. data/lib/mechanize/form.rb +1 -9
  39. data/lib/mechanize/headers.rb +1 -0
  40. data/lib/mechanize/history.rb +1 -0
  41. data/lib/mechanize/http/agent.rb +16 -8
  42. data/lib/mechanize/http/auth_challenge.rb +1 -0
  43. data/lib/mechanize/http/auth_realm.rb +1 -0
  44. data/lib/mechanize/http/auth_store.rb +1 -0
  45. data/lib/mechanize/http/content_disposition_parser.rb +14 -2
  46. data/lib/mechanize/http/www_authenticate_parser.rb +3 -3
  47. data/lib/mechanize/http.rb +1 -0
  48. data/lib/mechanize/image.rb +1 -0
  49. data/lib/mechanize/page/base.rb +1 -0
  50. data/lib/mechanize/page/frame.rb +1 -0
  51. data/lib/mechanize/page/image.rb +1 -0
  52. data/lib/mechanize/page/label.rb +1 -0
  53. data/lib/mechanize/page/link.rb +8 -1
  54. data/lib/mechanize/page/meta_refresh.rb +1 -0
  55. data/lib/mechanize/page.rb +4 -3
  56. data/lib/mechanize/parser.rb +1 -0
  57. data/lib/mechanize/pluggable_parsers.rb +1 -0
  58. data/lib/mechanize/prependable.rb +1 -0
  59. data/lib/mechanize/redirect_limit_reached_error.rb +1 -0
  60. data/lib/mechanize/redirect_not_get_or_head_error.rb +1 -0
  61. data/lib/mechanize/response_code_error.rb +2 -1
  62. data/lib/mechanize/response_read_error.rb +1 -0
  63. data/lib/mechanize/robots_disallowed_error.rb +1 -0
  64. data/lib/mechanize/test_case/bad_chunking_servlet.rb +1 -0
  65. data/lib/mechanize/test_case/basic_auth_servlet.rb +1 -0
  66. data/lib/mechanize/test_case/content_type_servlet.rb +1 -0
  67. data/lib/mechanize/test_case/digest_auth_servlet.rb +1 -0
  68. data/lib/mechanize/test_case/file_upload_servlet.rb +1 -0
  69. data/lib/mechanize/test_case/form_servlet.rb +1 -0
  70. data/lib/mechanize/test_case/gzip_servlet.rb +1 -0
  71. data/lib/mechanize/test_case/header_servlet.rb +1 -0
  72. data/lib/mechanize/test_case/http_refresh_servlet.rb +1 -0
  73. data/lib/mechanize/test_case/infinite_redirect_servlet.rb +1 -0
  74. data/lib/mechanize/test_case/infinite_refresh_servlet.rb +1 -0
  75. data/lib/mechanize/test_case/many_cookies_as_string_servlet.rb +1 -0
  76. data/lib/mechanize/test_case/many_cookies_servlet.rb +1 -0
  77. data/lib/mechanize/test_case/modified_since_servlet.rb +1 -0
  78. data/lib/mechanize/test_case/ntlm_servlet.rb +1 -0
  79. data/lib/mechanize/test_case/one_cookie_no_spaces_servlet.rb +1 -0
  80. data/lib/mechanize/test_case/one_cookie_servlet.rb +1 -0
  81. data/lib/mechanize/test_case/quoted_value_cookie_servlet.rb +1 -0
  82. data/lib/mechanize/test_case/redirect_servlet.rb +1 -0
  83. data/lib/mechanize/test_case/referer_servlet.rb +1 -0
  84. data/lib/mechanize/test_case/refresh_with_empty_url.rb +1 -0
  85. data/lib/mechanize/test_case/refresh_without_url.rb +1 -0
  86. data/lib/mechanize/test_case/response_code_servlet.rb +1 -0
  87. data/lib/mechanize/test_case/robots_txt_servlet.rb +1 -0
  88. data/lib/mechanize/test_case/send_cookies_servlet.rb +1 -0
  89. data/lib/mechanize/test_case/server.rb +1 -0
  90. data/lib/mechanize/test_case/servlets.rb +1 -0
  91. data/lib/mechanize/test_case/verb_servlet.rb +1 -0
  92. data/lib/mechanize/test_case.rb +32 -27
  93. data/lib/mechanize/unauthorized_error.rb +1 -0
  94. data/lib/mechanize/unsupported_scheme_error.rb +1 -0
  95. data/lib/mechanize/util.rb +2 -1
  96. data/lib/mechanize/version.rb +2 -1
  97. data/lib/mechanize/xml_file.rb +1 -0
  98. data/lib/mechanize.rb +2 -1
  99. data/mechanize.gemspec +48 -34
  100. data/test/htdocs/dir with spaces/foo.html +1 -0
  101. data/test/test_mechanize.rb +5 -4
  102. data/test/test_mechanize_cookie_jar.rb +2 -0
  103. data/test/test_mechanize_download.rb +1 -0
  104. data/test/test_mechanize_file.rb +1 -0
  105. data/test/test_mechanize_file_connection.rb +21 -3
  106. data/test/test_mechanize_file_response.rb +6 -0
  107. data/test/test_mechanize_http_agent.rb +47 -7
  108. data/test/test_mechanize_http_content_disposition_parser.rb +27 -0
  109. data/test/test_mechanize_link.rb +24 -0
  110. data/test/test_mechanize_page_encoding.rb +28 -1
  111. metadata +145 -56
  112. data/README.rdoc +0 -77
@@ -16,11 +16,7 @@ class TestMechanizeHttpAgent < Mechanize::TestCase
16
16
  @res.instance_variable_set :@code, 200
17
17
  @res.instance_variable_set :@header, {}
18
18
 
19
- @headers = if RUBY_VERSION >= '2.0.0' then
20
- %w[accept accept-encoding user-agent]
21
- else
22
- %w[accept user-agent]
23
- end
19
+ @headers = %w[accept accept-encoding user-agent]
24
20
  end
25
21
 
26
22
  def auth_realm uri, scheme, type
@@ -205,7 +201,7 @@ class TestMechanizeHttpAgent < Mechanize::TestCase
205
201
 
206
202
  page = @agent.fetch uri
207
203
 
208
- assert_equal File.read(foo), page.body
204
+ assert_equal File.read(foo), page.body.gsub(/\r\n/, "\n")
209
205
  assert_kind_of Mechanize::Page, page
210
206
  end
211
207
 
@@ -1508,7 +1504,8 @@ class TestMechanizeHttpAgent < Mechanize::TestCase
1508
1504
  headers = {
1509
1505
  'Range' => 'bytes=0-9999',
1510
1506
  'Content-Type' => 'application/x-www-form-urlencoded',
1511
- 'Content-Length' => '9999',
1507
+ 'CONTENT-LENGTH' => '9999',
1508
+ 'content-md5' => '14758f1afd44c09b7992073ccf00b43d',
1512
1509
  }
1513
1510
 
1514
1511
  page = fake_page
@@ -1520,6 +1517,7 @@ class TestMechanizeHttpAgent < Mechanize::TestCase
1520
1517
  assert_match 'range|bytes=0-9999', page.body
1521
1518
  refute_match 'content-type|application/x-www-form-urlencoded', page.body
1522
1519
  refute_match 'content-length|9999', page.body
1520
+ refute_match 'content-md5|14758f1afd44c09b7992073ccf00b43d', page.body
1523
1521
  end
1524
1522
 
1525
1523
  def test_response_redirect_malformed
@@ -1555,6 +1553,48 @@ class TestMechanizeHttpAgent < Mechanize::TestCase
1555
1553
  end
1556
1554
  end
1557
1555
 
1556
+ def test_response_redirect_to_cross_site_with_credential
1557
+ @agent.redirect_ok = true
1558
+
1559
+ headers = {
1560
+ 'Range' => 'bytes=0-9999',
1561
+ 'AUTHORIZATION' => 'Basic xxx',
1562
+ 'cookie' => 'name=value',
1563
+ }
1564
+
1565
+ page = html_page ''
1566
+ page = @agent.response_redirect({ 'Location' => 'http://trap/http_headers' }, :get,
1567
+ page, 0, headers)
1568
+
1569
+ refute_includes(headers.keys, "AUTHORIZATION")
1570
+ refute_includes(headers.keys, "cookie")
1571
+
1572
+ assert_match 'range|bytes=0-9999', page.body
1573
+ refute_match("authorization|Basic xxx", page.body)
1574
+ refute_match("cookie|name=value", page.body)
1575
+ end
1576
+
1577
+ def test_response_redirect_to_same_site_with_credential
1578
+ @agent.redirect_ok = true
1579
+
1580
+ headers = {
1581
+ 'Range' => 'bytes=0-9999',
1582
+ 'AUTHORIZATION' => 'Basic xxx',
1583
+ 'cookie' => 'name=value',
1584
+ }
1585
+
1586
+ page = html_page ''
1587
+ page = @agent.response_redirect({ 'Location' => '/http_headers' }, :get,
1588
+ page, 0, headers)
1589
+
1590
+ assert_includes(headers.keys, "AUTHORIZATION")
1591
+ assert_includes(headers.keys, "cookie")
1592
+
1593
+ assert_match 'range|bytes=0-9999', page.body
1594
+ assert_match("authorization|Basic xxx", page.body)
1595
+ assert_match("cookie|name=value", page.body)
1596
+ end
1597
+
1558
1598
  def test_response_redirect_not_ok
1559
1599
  @agent.redirect_ok = false
1560
1600
 
@@ -30,6 +30,33 @@ class TestMechanizeHttpContentDispositionParser < Mechanize::TestCase
30
30
  assert_equal expected, content_disposition.parameters
31
31
  end
32
32
 
33
+ def test_parse_date_iso8601_fallback
34
+ now = Time.at Time.now.to_i
35
+
36
+ content_disposition = @parser.parse \
37
+ 'attachment;' \
38
+ 'filename=value;' \
39
+ "creation-date=\"#{now.iso8601}\";" \
40
+ "modification-date=\"#{(now + 1).iso8601}\""
41
+
42
+ assert_equal 'attachment', content_disposition.type
43
+ assert_equal 'value', content_disposition.filename
44
+ assert_equal now, content_disposition.creation_date
45
+ assert_equal((now + 1), content_disposition.modification_date)
46
+ end
47
+
48
+ def test_parse_date_invalid
49
+ now = Time.at Time.now.to_i
50
+
51
+ content_disposition = @parser.parse \
52
+ 'attachment;' \
53
+ 'filename=value;' \
54
+ "creation-date=\"#{now.to_s}\";" \
55
+ "modification-date=\"#{(now + 1).to_s}\""
56
+
57
+ assert_nil content_disposition
58
+ end
59
+
33
60
  def test_parse_header
34
61
  content_disposition = @parser.parse \
35
62
  'content-disposition: attachment;filename=value', true
@@ -135,6 +135,30 @@ class TestMechanizeLink < Mechanize::TestCase
135
135
  assert_equal 'http://foo.bar/%20baz', link.uri.to_s
136
136
  end
137
137
 
138
+ def test_uri_weird_with_fragment
139
+ doc = Nokogiri::HTML::Document.new
140
+
141
+ node = Nokogiri::XML::Node.new('foo', doc)
142
+ node['href'] = 'http://foo.bar/ baz#уважение'
143
+
144
+ link = Mechanize::Page::Link.new(node, nil, nil)
145
+
146
+ assert_equal '%D1%83%D0%B2%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5', link.uri.fragment
147
+ end
148
+
149
+ def test_bad_uri_raise_compatible_exception
150
+ doc = Nokogiri::HTML::Document.new
151
+
152
+ node = Nokogiri::XML::Node.new('foo', doc)
153
+ node['href'] = 'http://http:foo.bar/ baz'
154
+
155
+ link = Mechanize::Page::Link.new(node, nil, nil)
156
+
157
+ assert_raises URI::InvalidURIError do
158
+ link.uri
159
+ end
160
+ end
161
+
138
162
  def test_resolving_full_uri
139
163
  page = @mech.get("http://localhost/frame_test.html")
140
164
  link = page.link_with(:text => "Form Test")
@@ -183,5 +183,32 @@ class TestMechanizePageEncoding < Mechanize::TestCase
183
183
  assert_equal Encoding::UTF_8, result.text.encoding
184
184
  end
185
185
 
186
- end
186
+ def test_parser_error_message_containing_encoding_errors
187
+ skip if RUBY_ENGINE == 'jruby' # this is a libxml2-specific condition
188
+
189
+ # https://github.com/sparklemotion/mechanize/issues/553
190
+ body = <<~EOF
191
+ <html>
192
+ <body>
193
+ <!--
194
+ ## メモ
195
+ 処理の一般化, 二重ループ, 多重ループ
196
+ wzxhzdk:25
197
+ -->
198
+ EOF
199
+ page = util_page body
200
+
201
+ # this should not raise an "invalid byte sequence in UTF-8" error while processing parsing errors
202
+ page.search("body")
187
203
 
204
+ # let's assert on the setup: a libxml2-returned parsing error itself contains an invalid character
205
+ # note that this problem only appears in libxml <= 2.9.10
206
+ error = page.parser.errors.find { |e| e.message.include?("Comment not terminated") }
207
+ if error
208
+ exception = assert_raises(ArgumentError) do
209
+ error.message =~ /any regex just to trigger encoding error/
210
+ end
211
+ assert_includes(exception.message, "invalid byte sequence in UTF-8")
212
+ end
213
+ end
214
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mechanize
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.7
4
+ version: 2.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Hodel
@@ -12,144 +12,156 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-02-01 00:00:00.000000000 Z
15
+ date: 2021-11-11 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
- name: net-http-digest_auth
18
+ name: addressable
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.1.1
24
21
  - - "~>"
25
22
  - !ruby/object:Gem::Version
26
- version: '1.1'
23
+ version: '2.8'
27
24
  type: :runtime
28
25
  prerelease: false
29
26
  version_requirements: !ruby/object:Gem::Requirement
30
27
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.1.1
34
28
  - - "~>"
35
29
  - !ruby/object:Gem::Version
36
- version: '1.1'
30
+ version: '2.8'
37
31
  - !ruby/object:Gem::Dependency
38
- name: mime-types
32
+ name: domain_name
39
33
  requirement: !ruby/object:Gem::Requirement
40
34
  requirements:
41
35
  - - ">="
42
36
  - !ruby/object:Gem::Version
43
- version: 1.17.2
37
+ version: 0.5.20190701
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.5'
44
41
  type: :runtime
45
42
  prerelease: false
46
43
  version_requirements: !ruby/object:Gem::Requirement
47
44
  requirements:
48
45
  - - ">="
49
46
  - !ruby/object:Gem::Version
50
- version: 1.17.2
47
+ version: 0.5.20190701
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: '0.5'
51
51
  - !ruby/object:Gem::Dependency
52
- name: net-http-persistent
52
+ name: http-cookie
53
53
  requirement: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 2.5.2
57
+ version: 1.0.3
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.0'
58
61
  type: :runtime
59
62
  prerelease: false
60
63
  version_requirements: !ruby/object:Gem::Requirement
61
64
  requirements:
62
65
  - - ">="
63
66
  - !ruby/object:Gem::Version
64
- version: 2.5.2
67
+ version: 1.0.3
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.0'
65
71
  - !ruby/object:Gem::Dependency
66
- name: http-cookie
72
+ name: mime-types
67
73
  requirement: !ruby/object:Gem::Requirement
68
74
  requirements:
69
75
  - - "~>"
70
76
  - !ruby/object:Gem::Version
71
- version: '1.0'
77
+ version: '3.0'
72
78
  type: :runtime
73
79
  prerelease: false
74
80
  version_requirements: !ruby/object:Gem::Requirement
75
81
  requirements:
76
82
  - - "~>"
77
83
  - !ruby/object:Gem::Version
78
- version: '1.0'
84
+ version: '3.0'
79
85
  - !ruby/object:Gem::Dependency
80
- name: nokogiri
86
+ name: net-http-digest_auth
81
87
  requirement: !ruby/object:Gem::Requirement
82
88
  requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 1.4.1
83
92
  - - "~>"
84
93
  - !ruby/object:Gem::Version
85
- version: '1.6'
94
+ version: '1.4'
86
95
  type: :runtime
87
96
  prerelease: false
88
97
  version_requirements: !ruby/object:Gem::Requirement
89
98
  requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: 1.4.1
90
102
  - - "~>"
91
103
  - !ruby/object:Gem::Version
92
- version: '1.6'
104
+ version: '1.4'
93
105
  - !ruby/object:Gem::Dependency
94
- name: ntlm-http
106
+ name: net-http-persistent
95
107
  requirement: !ruby/object:Gem::Requirement
96
108
  requirements:
97
109
  - - ">="
98
110
  - !ruby/object:Gem::Version
99
- version: 0.1.1
100
- - - "~>"
111
+ version: 2.5.2
112
+ - - "<"
101
113
  - !ruby/object:Gem::Version
102
- version: '0.1'
114
+ version: 5.0.dev
103
115
  type: :runtime
104
116
  prerelease: false
105
117
  version_requirements: !ruby/object:Gem::Requirement
106
118
  requirements:
107
119
  - - ">="
108
120
  - !ruby/object:Gem::Version
109
- version: 0.1.1
110
- - - "~>"
121
+ version: 2.5.2
122
+ - - "<"
111
123
  - !ruby/object:Gem::Version
112
- version: '0.1'
124
+ version: 5.0.dev
113
125
  - !ruby/object:Gem::Dependency
114
- name: webrobots
126
+ name: nokogiri
115
127
  requirement: !ruby/object:Gem::Requirement
116
128
  requirements:
117
- - - "<"
118
- - !ruby/object:Gem::Version
119
- version: '0.2'
120
129
  - - ">="
121
130
  - !ruby/object:Gem::Version
122
- version: 0.0.9
131
+ version: 1.11.2
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '1.11'
123
135
  type: :runtime
124
136
  prerelease: false
125
137
  version_requirements: !ruby/object:Gem::Requirement
126
138
  requirements:
127
- - - "<"
128
- - !ruby/object:Gem::Version
129
- version: '0.2'
130
139
  - - ">="
131
140
  - !ruby/object:Gem::Version
132
- version: 0.0.9
141
+ version: 1.11.2
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '1.11'
133
145
  - !ruby/object:Gem::Dependency
134
- name: domain_name
146
+ name: rubyntlm
135
147
  requirement: !ruby/object:Gem::Requirement
136
148
  requirements:
137
149
  - - ">="
138
150
  - !ruby/object:Gem::Version
139
- version: 0.5.1
151
+ version: 0.6.3
140
152
  - - "~>"
141
153
  - !ruby/object:Gem::Version
142
- version: '0.5'
154
+ version: '0.6'
143
155
  type: :runtime
144
156
  prerelease: false
145
157
  version_requirements: !ruby/object:Gem::Requirement
146
158
  requirements:
147
159
  - - ">="
148
160
  - !ruby/object:Gem::Version
149
- version: 0.5.1
161
+ version: 0.6.3
150
162
  - - "~>"
151
163
  - !ruby/object:Gem::Version
152
- version: '0.5'
164
+ version: '0.6'
153
165
  - !ruby/object:Gem::Dependency
154
166
  name: webrick
155
167
  requirement: !ruby/object:Gem::Requirement
@@ -164,6 +176,76 @@ dependencies:
164
176
  - - "~>"
165
177
  - !ruby/object:Gem::Version
166
178
  version: '1.7'
179
+ - !ruby/object:Gem::Dependency
180
+ name: webrobots
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: 0.1.2
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: 0.1.2
193
+ - !ruby/object:Gem::Dependency
194
+ name: minitest
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '5.14'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '5.14'
207
+ - !ruby/object:Gem::Dependency
208
+ name: rake
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: '13.0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: '13.0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rdoc
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '6.3'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '6.3'
235
+ - !ruby/object:Gem::Dependency
236
+ name: rubocop
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '1.12'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '1.12'
167
249
  description: |-
168
250
  The Mechanize library is used for automating interaction with websites.
169
251
  Mechanize automatically stores and sends cookies, follows redirects,
@@ -179,21 +261,22 @@ email:
179
261
  executables: []
180
262
  extensions: []
181
263
  extra_rdoc_files:
182
- - GUIDE.rdoc
183
264
  - EXAMPLES.rdoc
184
- - LICENSE.rdoc
185
- - CHANGELOG.rdoc
186
- - README.rdoc
265
+ - GUIDE.rdoc
266
+ - CHANGELOG.md
267
+ - README.md
187
268
  files:
188
269
  - ".autotest"
270
+ - ".github/dependabot.yml"
189
271
  - ".github/workflows/ci-test.yml"
190
272
  - ".gitignore"
191
- - CHANGELOG.rdoc
273
+ - ".yardopts"
274
+ - CHANGELOG.md
192
275
  - EXAMPLES.rdoc
193
276
  - GUIDE.rdoc
194
277
  - Gemfile
195
- - LICENSE.rdoc
196
- - README.rdoc
278
+ - LICENSE.txt
279
+ - README.md
197
280
  - Rakefile
198
281
  - examples/flickr_upload.rb
199
282
  - examples/mech-dump.rb
@@ -392,28 +475,34 @@ files:
392
475
  - test/test_mechanize_util.rb
393
476
  - test/test_mechanize_xml_file.rb
394
477
  - test/test_multi_select.rb
395
- homepage: http://docs.seattlerb.org/mechanize/
478
+ homepage: https://github.com/sparklemotion/mechanize
396
479
  licenses:
397
480
  - MIT
398
- metadata: {}
481
+ metadata:
482
+ yard.run: yard
483
+ bug_tracker_uri: https://github.com/sparklemotion/mechanize/issues
484
+ changelog_uri: https://github.com/sparklemotion/mechanize/blob/main/CHANGELOG.md
485
+ documentation_uri: https://www.rubydoc.info/gems/mechanize
486
+ homepage_uri: https://github.com/sparklemotion/mechanize
487
+ source_code_uri: https://github.com/sparklemotion/mechanize
399
488
  post_install_message:
400
489
  rdoc_options:
401
490
  - "--main"
402
- - README.rdoc
491
+ - README.md
403
492
  require_paths:
404
493
  - lib
405
494
  required_ruby_version: !ruby/object:Gem::Requirement
406
495
  requirements:
407
496
  - - ">="
408
497
  - !ruby/object:Gem::Version
409
- version: 1.9.2
498
+ version: 2.5.0
410
499
  required_rubygems_version: !ruby/object:Gem::Requirement
411
500
  requirements:
412
501
  - - ">="
413
502
  - !ruby/object:Gem::Version
414
503
  version: '0'
415
504
  requirements: []
416
- rubygems_version: 3.1.4
505
+ rubygems_version: 3.2.22
417
506
  signing_key:
418
507
  specification_version: 4
419
508
  summary: The Mechanize library is used for automating interaction with websites
data/README.rdoc DELETED
@@ -1,77 +0,0 @@
1
- = Mechanize {<img src="https://secure.travis-ci.org/sparklemotion/mechanize.svg?rvm=2.3.3" />}[http://travis-ci.org/sparklemotion/mechanize]
2
-
3
- * http://docs.seattlerb.org/mechanize
4
- * https://github.com/sparklemotion/mechanize
5
-
6
- == Description
7
-
8
- The Mechanize library is used for automating interaction with websites.
9
- Mechanize automatically stores and sends cookies, follows redirects,
10
- and can follow links and submit forms. Form fields can be populated and
11
- submitted. Mechanize also keeps track of the sites that you have visited as
12
- a history.
13
-
14
- == Dependencies
15
-
16
- * ruby 1.9.2 or newer
17
- * nokogiri[https://github.com/sparklemotion/nokogiri]
18
-
19
- == Support:
20
-
21
- The bug tracker is available here:
22
-
23
- * https://github.com/sparklemotion/mechanize/issues
24
-
25
- == Examples
26
-
27
- If you are just starting, check out the GUIDE[http://docs.seattlerb.org/mechanize/GUIDE_rdoc.html] or
28
- the EXAMPLES[http://docs.seattlerb.org/mechanize/EXAMPLES_rdoc.html] file.
29
-
30
- == Developers
31
-
32
- Use bundler to install dependencies:
33
-
34
- bundle install
35
-
36
- Run all tests with:
37
-
38
- rake test
39
-
40
- You can also use +autotest+ from the ZenTest gem to run tests.
41
-
42
- See also Mechanize::TestCase to read about the built-in testing
43
- infrastructure.
44
-
45
- == Authors
46
-
47
- Copyright (c) 2005 by Michael Neumann (mneumann@ntecs.de)
48
-
49
- Copyright (c) 2006-2011:
50
-
51
- * {Aaron Patterson}[http://tenderlovemaking.com] (aaron.patterson@gmail.com)
52
- * {Mike Dalessio}[http://mike.daless.io] (mike@csa.net)
53
-
54
- Copyright (c) 2011-2015:
55
-
56
- * {Eric Hodel}[http://blog.segment7.net] (drbrain@segment7.net)
57
- * {Akinori MUSHA}[http://blog.akinori.org] (knu@idaemons.org)
58
- * {Lee Jarvis}[http://twitter.com/lee_jarvis] (ljjarvis@gmail.com)
59
-
60
- This library comes with a shameless plug for employing me
61
- (Aaron[http://tenderlovemaking.com/]) programming Ruby, my favorite language!
62
-
63
- == Acknowledgments
64
-
65
- This library was heavily influenced by its namesake in the Perl world. A big
66
- thanks goes to {Andy Lester}[http://petdance.com],
67
- the author of the original Perl module WWW::Mechanize which is available
68
- here[http://search.cpan.org/dist/WWW-Mechanize/]. Ruby Mechanize would not be around without you!
69
-
70
- Thank you to Michael Neumann for starting the Ruby version. Thanks to everyone
71
- who's helped out in various ways. Finally, thank you to the people using this
72
- library!
73
-
74
- == License
75
-
76
- This library is distributed under the MIT license. Please see the LICENSE[http://docs.seattlerb.org/mechanize/LICENSE_rdoc.html] file.
77
-