httpx 0.14.0 → 0.14.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|