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 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