httpx 0.14.0 → 0.14.1
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/doc/release_notes/0_14_1.md +7 -0
- data/lib/httpx/connection/http1.rb +7 -4
- data/lib/httpx/connection/http2.rb +9 -7
- data/lib/httpx/headers.rb +6 -2
- data/lib/httpx/plugins/multipart/part.rb +1 -1
- data/lib/httpx/plugins/proxy/http.rb +5 -4
- data/lib/httpx/version.rb +1 -1
- data/sig/connection/http1.rbs +2 -2
- data/sig/connection/http2.rbs +1 -1
- data/sig/headers.rbs +2 -2
- metadata +34 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbedc26fba4c0d9a8e0543b437ada103b42bbd89d537a50546590adb2f004d04
|
4
|
+
data.tar.gz: 6645eeb893ed1f07a8e7c7c86db73c0ff2d49f01c63e52888d7da868b925bcdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea37e203901dbae07960c12023cbeb2b3ee62ea461a265ab3dff8687b8874e33cf3bf0bbf62df30243030ce9420317bf635e5df1102cfa9a8503ec09949ca3c
|
7
|
+
data.tar.gz: 3515498ac93ca1ef5f165754e8caa95dbddf8aebe079b0efbf8d5a7a78a778d76a4812e4beeddc723dd6fb81dafa4a47c7ae9cb2463834ebd5cf7812ef30a45c
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# 0.14.0
|
2
|
+
|
3
|
+
|
4
|
+
## Bugfixes
|
5
|
+
|
6
|
+
* fixed: HTTP/2-specific headers were being reused on insecure redirects, thereby creating an invalid request (#128);
|
7
|
+
* fixed: multipart request parts weren't using explicity set `:content_type`, instead using file mime type or "text/plain";
|
@@ -254,12 +254,15 @@ module HTTPX
|
|
254
254
|
end
|
255
255
|
|
256
256
|
def set_protocol_headers(request)
|
257
|
-
request.headers["host"] ||= request.authority
|
258
|
-
request.headers["connection"] ||= request.options.persistent ? "keep-alive" : "close"
|
259
257
|
if !request.headers.key?("content-length") &&
|
260
258
|
request.body.bytesize == Float::INFINITY
|
261
259
|
request.chunk!
|
262
260
|
end
|
261
|
+
|
262
|
+
{
|
263
|
+
"host" => (request.headers["host"] || request.authority),
|
264
|
+
"connection" => (request.headers["connection"] || (request.options.persistent ? "keep-alive" : "close")),
|
265
|
+
}
|
263
266
|
end
|
264
267
|
|
265
268
|
def headline_uri(request)
|
@@ -282,8 +285,8 @@ module HTTPX
|
|
282
285
|
def join_headers(request)
|
283
286
|
@buffer << "#{request.verb.to_s.upcase} #{headline_uri(request)} HTTP/#{@version.join(".")}" << CRLF
|
284
287
|
log(color: :yellow) { "<- HEADLINE: #{@buffer.to_s.chomp.inspect}" }
|
285
|
-
set_protocol_headers(request)
|
286
|
-
join_headers2(request.headers)
|
288
|
+
extra_headers = set_protocol_headers(request)
|
289
|
+
join_headers2(request.headers.each(extra_headers))
|
287
290
|
log { "<- " }
|
288
291
|
@buffer << CRLF
|
289
292
|
end
|
@@ -192,18 +192,20 @@ module HTTPX
|
|
192
192
|
end
|
193
193
|
|
194
194
|
def set_protocol_headers(request)
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
195
|
+
{
|
196
|
+
":scheme" => request.scheme,
|
197
|
+
":method" => request.verb.to_s.upcase,
|
198
|
+
":path" => headline_uri(request),
|
199
|
+
":authority" => request.authority,
|
200
|
+
}
|
199
201
|
end
|
200
202
|
|
201
203
|
def join_headers(stream, request)
|
202
|
-
set_protocol_headers(request)
|
204
|
+
extra_headers = set_protocol_headers(request)
|
203
205
|
log(level: 1, color: :yellow) do
|
204
|
-
request.headers.each.map { |k, v| "#{stream.id}: -> HEADER: #{k}: #{v}" }.join("\n")
|
206
|
+
request.headers.merge(extra_headers).each.map { |k, v| "#{stream.id}: -> HEADER: #{k}: #{v}" }.join("\n")
|
205
207
|
end
|
206
|
-
stream.headers(request.headers.each, end_stream: request.empty?)
|
208
|
+
stream.headers(request.headers.each(extra_headers), end_stream: request.empty?)
|
207
209
|
end
|
208
210
|
|
209
211
|
def join_trailers(stream, request)
|
data/lib/httpx/headers.rb
CHANGED
@@ -103,12 +103,16 @@ module HTTPX
|
|
103
103
|
# returns the enumerable headers store in pairs of header field + the values in
|
104
104
|
# the comma-separated string format
|
105
105
|
#
|
106
|
-
def each
|
107
|
-
return enum_for(__method__) { @headers.size } unless block_given?
|
106
|
+
def each(extra_headers = nil)
|
107
|
+
return enum_for(__method__, extra_headers) { @headers.size } unless block_given?
|
108
108
|
|
109
109
|
@headers.each do |field, value|
|
110
110
|
yield(field, value.join(", ")) unless value.empty?
|
111
111
|
end
|
112
|
+
|
113
|
+
extra_headers.each do |field, value|
|
114
|
+
yield(field, value) unless value.empty?
|
115
|
+
end if extra_headers
|
112
116
|
end
|
113
117
|
|
114
118
|
def ==(other)
|
@@ -26,7 +26,7 @@ module HTTPX
|
|
26
26
|
content_type ||= MimeTypeDetector.call(value, filename) || "application/octet-stream"
|
27
27
|
[value, content_type, filename]
|
28
28
|
else
|
29
|
-
[StringIO.new(value.to_s), "text/plain"]
|
29
|
+
[StringIO.new(value.to_s), content_type || "text/plain"]
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -82,11 +82,12 @@ module HTTPX
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def set_protocol_headers(request)
|
85
|
-
super
|
85
|
+
extra_headers = super
|
86
|
+
|
86
87
|
proxy_params = @options.proxy
|
87
|
-
|
88
|
-
|
89
|
-
|
88
|
+
extra_headers["proxy-authorization"] = "Basic #{proxy_params.token_authentication}" if proxy_params.authenticated?
|
89
|
+
extra_headers["proxy-connection"] = extra_headers.delete("connection") if extra_headers.key?("connection")
|
90
|
+
extra_headers
|
90
91
|
end
|
91
92
|
end
|
92
93
|
|
data/lib/httpx/version.rb
CHANGED
data/sig/connection/http1.rbs
CHANGED
@@ -52,7 +52,7 @@ module HTTPX
|
|
52
52
|
|
53
53
|
def disable_pipelining: () -> void
|
54
54
|
|
55
|
-
def set_protocol_headers: (Request) ->
|
55
|
+
def set_protocol_headers: (Request) -> _Each[headers_key, String]
|
56
56
|
|
57
57
|
def headline_uri: (Request) -> String
|
58
58
|
|
@@ -62,7 +62,7 @@ module HTTPX
|
|
62
62
|
|
63
63
|
def join_trailers: (Request request) -> void
|
64
64
|
|
65
|
-
def join_headers2: (
|
65
|
+
def join_headers2: (_Each[headers_key, String] headers) -> void
|
66
66
|
|
67
67
|
def join_body: (Request request) -> void
|
68
68
|
|
data/sig/connection/http2.rbs
CHANGED
data/sig/headers.rbs
CHANGED
@@ -14,8 +14,8 @@ module HTTPX
|
|
14
14
|
def add: (headers_key field, string value) -> void
|
15
15
|
def delete: (headers_key field) -> void
|
16
16
|
|
17
|
-
def each: () { (headers_key, String) -> void } -> void
|
18
|
-
| () -> Enumerable[[headers_key, String], void]
|
17
|
+
def each: (?_Each[headers_key, String]? extra_headers) { (headers_key, String) -> void } -> void
|
18
|
+
| (?_Each[headers_key, String]? extra_headers) -> Enumerable[[headers_key, String], void]
|
19
19
|
|
20
20
|
def get: (headers_key field) -> Array[String]
|
21
21
|
def key?: (headers_key downcased_key) -> bool
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: httpx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Cardoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http-2-next
|
@@ -47,44 +47,45 @@ extra_rdoc_files:
|
|
47
47
|
- LICENSE.txt
|
48
48
|
- README.md
|
49
49
|
- doc/release_notes/0_0_1.md
|
50
|
-
- doc/release_notes/
|
51
|
-
- doc/release_notes/
|
50
|
+
- doc/release_notes/0_0_2.md
|
51
|
+
- doc/release_notes/0_0_3.md
|
52
52
|
- doc/release_notes/0_0_4.md
|
53
|
-
- doc/release_notes/
|
54
|
-
- doc/release_notes/
|
55
|
-
- doc/release_notes/
|
56
|
-
- doc/release_notes/0_6_1.md
|
57
|
-
- doc/release_notes/0_11_2.md
|
58
|
-
- doc/release_notes/0_7_0.md
|
59
|
-
- doc/release_notes/0_6_0.md
|
53
|
+
- doc/release_notes/0_0_5.md
|
54
|
+
- doc/release_notes/0_10_0.md
|
55
|
+
- doc/release_notes/0_10_1.md
|
60
56
|
- doc/release_notes/0_10_2.md
|
57
|
+
- doc/release_notes/0_11_0.md
|
58
|
+
- doc/release_notes/0_11_1.md
|
59
|
+
- doc/release_notes/0_11_2.md
|
61
60
|
- doc/release_notes/0_11_3.md
|
62
|
-
- doc/release_notes/0_8_2.md
|
63
|
-
- doc/release_notes/0_6_4.md
|
64
|
-
- doc/release_notes/0_13_1.md
|
65
61
|
- doc/release_notes/0_12_0.md
|
66
|
-
- doc/release_notes/
|
67
|
-
- doc/release_notes/
|
68
|
-
- doc/release_notes/0_10_1.md
|
69
|
-
- doc/release_notes/0_11_0.md
|
70
|
-
- doc/release_notes/0_8_1.md
|
71
|
-
- doc/release_notes/0_5_0.md
|
72
|
-
- doc/release_notes/0_6_7.md
|
62
|
+
- doc/release_notes/0_13_0.md
|
63
|
+
- doc/release_notes/0_13_1.md
|
73
64
|
- doc/release_notes/0_13_2.md
|
65
|
+
- doc/release_notes/0_14_0.md
|
66
|
+
- doc/release_notes/0_14_1.md
|
67
|
+
- doc/release_notes/0_1_0.md
|
68
|
+
- doc/release_notes/0_2_0.md
|
69
|
+
- doc/release_notes/0_2_1.md
|
70
|
+
- doc/release_notes/0_3_0.md
|
71
|
+
- doc/release_notes/0_3_1.md
|
72
|
+
- doc/release_notes/0_4_0.md
|
74
73
|
- doc/release_notes/0_4_1.md
|
74
|
+
- doc/release_notes/0_5_0.md
|
75
75
|
- doc/release_notes/0_5_1.md
|
76
|
-
- doc/release_notes/
|
77
|
-
- doc/release_notes/
|
76
|
+
- doc/release_notes/0_6_0.md
|
77
|
+
- doc/release_notes/0_6_1.md
|
78
78
|
- doc/release_notes/0_6_2.md
|
79
|
-
- doc/release_notes/
|
80
|
-
- doc/release_notes/
|
79
|
+
- doc/release_notes/0_6_3.md
|
80
|
+
- doc/release_notes/0_6_4.md
|
81
|
+
- doc/release_notes/0_6_5.md
|
82
|
+
- doc/release_notes/0_6_6.md
|
83
|
+
- doc/release_notes/0_6_7.md
|
84
|
+
- doc/release_notes/0_7_0.md
|
81
85
|
- doc/release_notes/0_8_0.md
|
82
|
-
- doc/release_notes/
|
83
|
-
- doc/release_notes/
|
84
|
-
- doc/release_notes/
|
85
|
-
- doc/release_notes/0_0_2.md
|
86
|
-
- doc/release_notes/0_3_1.md
|
87
|
-
- doc/release_notes/0_2_0.md
|
86
|
+
- doc/release_notes/0_8_1.md
|
87
|
+
- doc/release_notes/0_8_2.md
|
88
|
+
- doc/release_notes/0_9_0.md
|
88
89
|
files:
|
89
90
|
- LICENSE.txt
|
90
91
|
- README.md
|
@@ -105,6 +106,7 @@ files:
|
|
105
106
|
- doc/release_notes/0_13_1.md
|
106
107
|
- doc/release_notes/0_13_2.md
|
107
108
|
- doc/release_notes/0_14_0.md
|
109
|
+
- doc/release_notes/0_14_1.md
|
108
110
|
- doc/release_notes/0_1_0.md
|
109
111
|
- doc/release_notes/0_2_0.md
|
110
112
|
- doc/release_notes/0_2_1.md
|
@@ -287,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
287
289
|
- !ruby/object:Gem::Version
|
288
290
|
version: '0'
|
289
291
|
requirements: []
|
290
|
-
rubygems_version: 3.
|
292
|
+
rubygems_version: 3.2.15
|
291
293
|
signing_key:
|
292
294
|
specification_version: 4
|
293
295
|
summary: HTTPX, to the future, and beyond
|