mechanize 2.12.2 → 2.14.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/.github/workflows/upstream.yml +2 -2
- data/CHANGELOG.md +11 -0
- data/lib/mechanize/form.rb +1 -1
- data/lib/mechanize/http/agent.rb +7 -0
- data/lib/mechanize/util.rb +14 -16
- data/lib/mechanize/version.rb +1 -1
- data/lib/mechanize.rb +15 -0
- data/test/test_mechanize.rb +9 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00134b35e4583ae30a00b320468fa362e7290bced2f030a3e02544848f58cde6
|
4
|
+
data.tar.gz: babed05130568f0a4c306ccaa77da706334bafbd3fe898c961af5e4faaa98c03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26e8e71a37e1811cfd108c3947d6eaac79576128e2b684e9b1e1d32ee83270f93b4c912b5fa8a324fb643b28dc423ed88ad95bad6efc904fe3af592d9d179844
|
7
|
+
data.tar.gz: 20ae7f34891ff7dd2284831acad91789656c6817d70577de885744d419ac447d8fac5cb6d7f2e609624835f2b506a85cbd5ba20f6881ae6d402f6b17ae460b82
|
data/.github/workflows/ci.yml
CHANGED
@@ -32,7 +32,7 @@ jobs:
|
|
32
32
|
strategy:
|
33
33
|
fail-fast: false
|
34
34
|
matrix:
|
35
|
-
ruby-version: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "
|
35
|
+
ruby-version: ["2.6", "2.7", "3.0", "3.1", "3.2", "3.3", "3.4", "head"]
|
36
36
|
runs-on: ubuntu-latest
|
37
37
|
steps:
|
38
38
|
- uses: actions/checkout@v4
|
@@ -23,7 +23,7 @@ jobs:
|
|
23
23
|
strategy:
|
24
24
|
fail-fast: false
|
25
25
|
matrix:
|
26
|
-
ruby-version: ["head"
|
26
|
+
ruby-version: ["head"]
|
27
27
|
runs-on: ubuntu-latest
|
28
28
|
steps:
|
29
29
|
- uses: actions/checkout@v4
|
@@ -44,7 +44,7 @@ jobs:
|
|
44
44
|
steps:
|
45
45
|
- uses: actions/checkout@v4
|
46
46
|
- uses: ruby/setup-ruby@v1
|
47
|
-
with: { ruby-version: "3.
|
47
|
+
with: { ruby-version: "3.4" }
|
48
48
|
- run: |
|
49
49
|
bundle add ${{matrix.name}} --git="${{matrix.git}}"
|
50
50
|
bundle show
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Mechanize CHANGELOG
|
2
2
|
|
3
|
+
## 2.14.0 / 2025-01-05
|
4
|
+
|
5
|
+
* `Mechanize` exposes a `write_timeout` attribute, which is set on the connection if it's supported (e.g., `Net::HTTP::Persistent.write_timeout`). (#586) @maurycy
|
6
|
+
|
7
|
+
|
8
|
+
## 2.13.0 / 2025-01-02
|
9
|
+
|
10
|
+
* Quash frozen string warnings in Ruby 3.4. (#661) @simpl1g
|
11
|
+
* Quash URI::Parser warnings in Ruby 3.4. (#662) @flavorjones
|
12
|
+
|
13
|
+
|
3
14
|
## 2.12.2 / 2023-10-02
|
4
15
|
|
5
16
|
* Quash warnings from `Mime::Type.new` in `mime-types` v3.6.0. (#655) @avk
|
data/lib/mechanize/form.rb
CHANGED
data/lib/mechanize/http/agent.rb
CHANGED
@@ -106,6 +106,9 @@ class Mechanize::HTTP::Agent
|
|
106
106
|
# Length of time to attempt to read data from the server
|
107
107
|
attr_accessor :read_timeout
|
108
108
|
|
109
|
+
# Length of time to attempt to write data to the server
|
110
|
+
attr_accessor :write_timeout
|
111
|
+
|
109
112
|
# :section:
|
110
113
|
|
111
114
|
# The cookies for this agent
|
@@ -161,6 +164,7 @@ class Mechanize::HTTP::Agent
|
|
161
164
|
@robots_mutex = Mutex.new
|
162
165
|
@user_agent = nil
|
163
166
|
@webrobots = nil
|
167
|
+
@write_timeout = nil
|
164
168
|
|
165
169
|
# HTTP Authentication
|
166
170
|
@auth_store = Mechanize::HTTP::AuthStore.new
|
@@ -274,6 +278,9 @@ class Mechanize::HTTP::Agent
|
|
274
278
|
if @read_timeout && connection.respond_to?(:read_timeout=)
|
275
279
|
connection.read_timeout = @read_timeout
|
276
280
|
end
|
281
|
+
if @write_timeout && connection.respond_to?(:write_timeout=)
|
282
|
+
connection.write_timeout = @write_timeout
|
283
|
+
end
|
277
284
|
|
278
285
|
request_log request
|
279
286
|
|
data/lib/mechanize/util.rb
CHANGED
@@ -134,29 +134,27 @@ class Mechanize::Util
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def self.uri_escape str, unsafe = nil
|
137
|
-
|
138
|
-
URI::Parser.new
|
139
|
-
rescue NameError
|
140
|
-
URI
|
141
|
-
end
|
142
|
-
|
143
|
-
if URI == @parser then
|
137
|
+
if URI == parser then
|
144
138
|
unsafe ||= URI::UNSAFE
|
145
139
|
else
|
146
|
-
unsafe ||=
|
140
|
+
unsafe ||= parser.regexp[:UNSAFE]
|
147
141
|
end
|
148
142
|
|
149
|
-
|
143
|
+
parser.escape str, unsafe
|
150
144
|
end
|
151
145
|
|
152
146
|
def self.uri_unescape str
|
153
|
-
|
154
|
-
URI::Parser.new
|
155
|
-
rescue NameError
|
156
|
-
URI
|
157
|
-
end
|
158
|
-
|
159
|
-
@parser.unescape str
|
147
|
+
parser.unescape str
|
160
148
|
end
|
161
149
|
|
150
|
+
def self.parser
|
151
|
+
@parser ||=
|
152
|
+
if defined?(URI::RFC2396_PARSER)
|
153
|
+
URI::RFC2396_PARSER
|
154
|
+
elsif defined?(URI::Parser)
|
155
|
+
URI::Parser.new
|
156
|
+
else
|
157
|
+
URI
|
158
|
+
end
|
159
|
+
end
|
162
160
|
end
|
data/lib/mechanize/version.rb
CHANGED
data/lib/mechanize.rb
CHANGED
@@ -951,6 +951,21 @@ Use of #auth and #basic_auth are deprecated due to a security vulnerability.
|
|
951
951
|
@agent.read_timeout = read_timeout
|
952
952
|
end
|
953
953
|
|
954
|
+
##
|
955
|
+
# Length of time to wait for data to be sent to the server
|
956
|
+
|
957
|
+
def write_timeout
|
958
|
+
@agent.write_timeout
|
959
|
+
end
|
960
|
+
|
961
|
+
##
|
962
|
+
# Sets the timeout for each chunk of data to be sent to the server to
|
963
|
+
# +write_timeout+. A single request may write many chunks of data.
|
964
|
+
|
965
|
+
def write_timeout= write_timeout
|
966
|
+
@agent.write_timeout = write_timeout
|
967
|
+
end
|
968
|
+
|
954
969
|
##
|
955
970
|
# Controls how mechanize deals with redirects. The following values are
|
956
971
|
# allowed:
|
data/test/test_mechanize.rb
CHANGED
@@ -1016,8 +1016,16 @@ but not <a href="/" rel="me nofollow">this</a>!
|
|
1016
1016
|
|
1017
1017
|
def test_read_timeout_equals
|
1018
1018
|
@mech.read_timeout = 5
|
1019
|
-
|
1020
1019
|
assert_equal 5, @mech.read_timeout
|
1020
|
+
assert @mech.get('http://localhost/response_code?code=200')
|
1021
|
+
assert_equal 5, @mech.agent.http.read_timeout
|
1022
|
+
end
|
1023
|
+
|
1024
|
+
def test_write_timeout_equals
|
1025
|
+
@mech.write_timeout = 7
|
1026
|
+
assert_equal 7, @mech.write_timeout
|
1027
|
+
assert @mech.get('http://localhost/response_code?code=200')
|
1028
|
+
assert_equal 7, @mech.agent.http.write_timeout
|
1021
1029
|
end
|
1022
1030
|
|
1023
1031
|
def test_timeouts_for_file_connection
|
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.
|
4
|
+
version: 2.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Hodel
|
@@ -9,10 +9,9 @@ authors:
|
|
9
9
|
- Mike Dalessio
|
10
10
|
- Akinori MUSHA
|
11
11
|
- Lee Jarvis
|
12
|
-
autorequire:
|
13
12
|
bindir: bin
|
14
13
|
cert_chain: []
|
15
|
-
date:
|
14
|
+
date: 2025-01-05 00:00:00.000000000 Z
|
16
15
|
dependencies:
|
17
16
|
- !ruby/object:Gem::Dependency
|
18
17
|
name: addressable
|
@@ -459,7 +458,6 @@ metadata:
|
|
459
458
|
documentation_uri: https://www.rubydoc.info/gems/mechanize
|
460
459
|
homepage_uri: https://github.com/sparklemotion/mechanize
|
461
460
|
source_code_uri: https://github.com/sparklemotion/mechanize
|
462
|
-
post_install_message:
|
463
461
|
rdoc_options:
|
464
462
|
- "--main"
|
465
463
|
- README.md
|
@@ -476,8 +474,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
476
474
|
- !ruby/object:Gem::Version
|
477
475
|
version: '0'
|
478
476
|
requirements: []
|
479
|
-
rubygems_version: 3.
|
480
|
-
signing_key:
|
477
|
+
rubygems_version: 3.6.2
|
481
478
|
specification_version: 4
|
482
479
|
summary: The Mechanize library is used for automating interaction with websites
|
483
480
|
test_files:
|