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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abbeaccc55115244f08e7b39aaad174a34dd2e7aeb10b32cdc0563fbefe1b953
4
- data.tar.gz: a39fc4e5644b21c1265840011e969c36904756573584cba0f805d568a549ec94
3
+ metadata.gz: fbedc26fba4c0d9a8e0543b437ada103b42bbd89d537a50546590adb2f004d04
4
+ data.tar.gz: 6645eeb893ed1f07a8e7c7c86db73c0ff2d49f01c63e52888d7da868b925bcdc
5
5
  SHA512:
6
- metadata.gz: 82fa475dcd9ef05ebe90f0b3c742c17c33185410a70eb5af730fce393681b7f9f346decf78349614f77b76257550c0e3056e61f3b5d6cd5efdba0149eff235f6
7
- data.tar.gz: 64ceb596415b440c99c9df31569fa0ee2f7c94e51787d5e0d84141f1ade0be92e23e2d7011a361c1366b43c4f159525599367009bd4021c358537f11c4605cac
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
- request.headers[":scheme"] = request.scheme
196
- request.headers[":method"] = request.verb.to_s.upcase
197
- request.headers[":path"] = headline_uri(request)
198
- request.headers[":authority"] = request.authority
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
- request.headers["proxy-authorization"] = "Basic #{proxy_params.token_authentication}" if proxy_params.authenticated?
88
- request.headers["proxy-connection"] = request.headers["connection"]
89
- request.headers.delete("connection")
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HTTPX
4
- VERSION = "0.14.0"
4
+ VERSION = "0.14.1"
5
5
  end
@@ -52,7 +52,7 @@ module HTTPX
52
52
 
53
53
  def disable_pipelining: () -> void
54
54
 
55
- def set_protocol_headers: (Request) -> void
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: (Headers headers) -> void
65
+ def join_headers2: (_Each[headers_key, String] headers) -> void
66
66
 
67
67
  def join_body: (Request request) -> void
68
68
 
@@ -43,7 +43,7 @@ module HTTPX
43
43
 
44
44
  def headline_uri: (Request) -> String
45
45
 
46
- def set_protocol_headers: (Request) -> void
46
+ def set_protocol_headers: (Request) -> _Each[headers_key, String]
47
47
 
48
48
  def handle: (Request request, HTTP2Next::Stream stream) -> void
49
49
 
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.0
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-22 00:00:00.000000000 Z
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/0_1_0.md
51
- - doc/release_notes/0_0_5.md
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/0_14_0.md
54
- - doc/release_notes/0_6_5.md
55
- - doc/release_notes/0_13_0.md
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/0_9_0.md
67
- - doc/release_notes/0_6_3.md
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/0_6_6.md
77
- - doc/release_notes/0_4_0.md
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/0_10_0.md
80
- - doc/release_notes/0_11_1.md
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/0_3_0.md
83
- - doc/release_notes/0_2_1.md
84
- - doc/release_notes/0_0_3.md
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.1.6
292
+ rubygems_version: 3.2.15
291
293
  signing_key:
292
294
  specification_version: 4
293
295
  summary: HTTPX, to the future, and beyond