mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-07-23 00:01:26 -04:00
Compare commits
6 Commits
02c1917004
...
6437b4b5fb
Author | SHA1 | Date | |
---|---|---|---|
|
6437b4b5fb | ||
|
ce5c2c2f21 | ||
|
4eb1ccb532 | ||
|
b0e1e2e837 | ||
|
ee66b7e5cc | ||
|
b82e57c281 |
@ -1,4 +1,4 @@
|
||||
# 1.1.2
|
||||
# 1.1.3
|
||||
|
||||
## improvements
|
||||
|
||||
|
6
doc/release_notes/1_1_4.md
Normal file
6
doc/release_notes/1_1_4.md
Normal file
@ -0,0 +1,6 @@
|
||||
# 1.1.4
|
||||
|
||||
## bug reports
|
||||
|
||||
* datadog adapter: use `Gem::Version` to invoke the correct configuration API.
|
||||
* stream plugin: do not preempt request enqueuing (this was making integration with the `:follow_redirects` plugin fail when set up with `webmock`).
|
@ -214,6 +214,17 @@ class WebmockTest < Minitest::Test
|
||||
assert_not_requested(:get, "http://#{httpbin}")
|
||||
end
|
||||
|
||||
def test_webmock_follow_redirects_with_stream_plugin
|
||||
session = HTTPX.plugin(:follow_redirects).plugin(:stream)
|
||||
redirect_url = "#{MOCK_URL_HTTP}/redirect"
|
||||
initial_request = stub_request(:get, MOCK_URL_HTTP).to_return(status: 302, headers: { location: redirect_url })
|
||||
redirect_request = stub_request(:get, redirect_url)
|
||||
|
||||
session.get(MOCK_URL_HTTP, stream: true).each.to_a.join
|
||||
assert_requested(initial_request)
|
||||
assert_requested(redirect_request)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assert_raise_with_message(e, message, &block)
|
||||
|
@ -126,7 +126,7 @@ module Datadog::Tracing
|
||||
option :distributed_tracing, default: true
|
||||
option :split_by_domain, default: false
|
||||
|
||||
if DDTrace::VERSION::STRING >= "1.13.0"
|
||||
if Gem::Version.new(DDTrace::VERSION::STRING) >= Gem::Version.new("1.13.0")
|
||||
option :enabled do |o|
|
||||
o.type :bool
|
||||
o.env "DD_TRACE_HTTPX_ENABLED"
|
||||
@ -182,12 +182,12 @@ module Datadog::Tracing
|
||||
|
||||
option :distributed_tracing, default: true
|
||||
|
||||
if DDTrace::VERSION::STRING >= "1.15.0"
|
||||
if Gem::Version.new(DDTrace::VERSION::STRING) >= Gem::Version.new("1.15.0")
|
||||
option :error_handler do |o|
|
||||
o.type :proc
|
||||
o.default_proc(&DEFAULT_ERROR_HANDLER)
|
||||
end
|
||||
elsif DDTrace::VERSION::STRING >= "1.13.0"
|
||||
elsif Gem::Version.new(DDTrace::VERSION::STRING) >= Gem::Version.new("1.13.0")
|
||||
option :error_handler do |o|
|
||||
o.type :proc
|
||||
o.experimental_default_proc(&DEFAULT_ERROR_HANDLER)
|
||||
|
@ -215,7 +215,7 @@ module HTTPX
|
||||
**opts)
|
||||
grpc_request = build_grpc_request(rpc_method, input, deadline: deadline, metadata: metadata, **opts)
|
||||
response = request(grpc_request, **opts)
|
||||
response.raise_for_status
|
||||
response.raise_for_status unless opts[:stream]
|
||||
GRPC::Call.new(response)
|
||||
end
|
||||
|
||||
|
@ -36,7 +36,6 @@ module HTTPX
|
||||
|
||||
class Inflater
|
||||
def initialize(response)
|
||||
@encodings = response.headers.get("grpc-encoding")
|
||||
@response = response
|
||||
end
|
||||
|
||||
@ -49,7 +48,7 @@ module HTTPX
|
||||
encoded_data = message.byteslice(5..size + 5 - 1)
|
||||
|
||||
if compressed == 1
|
||||
@encodings.reverse_each do |encoding|
|
||||
grpc_encodings.reverse_each do |encoding|
|
||||
decoder = @response.body.class.initialize_inflater_by_encoding(encoding, @response, bytesize: encoded_data.bytesize)
|
||||
encoded_data = decoder.call(encoded_data)
|
||||
|
||||
@ -68,6 +67,12 @@ module HTTPX
|
||||
|
||||
data
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def grpc_encodings
|
||||
@grpc_encodings ||= @response.headers.get("grpc-encoding")
|
||||
end
|
||||
end
|
||||
|
||||
def self.encode(*args, **kwargs)
|
||||
|
@ -2,10 +2,9 @@
|
||||
|
||||
module HTTPX
|
||||
class StreamResponse
|
||||
def initialize(request, session, connections)
|
||||
def initialize(request, session)
|
||||
@request = request
|
||||
@session = session
|
||||
@connections = connections
|
||||
end
|
||||
|
||||
def each(&block)
|
||||
@ -16,19 +15,9 @@ module HTTPX
|
||||
begin
|
||||
@on_chunk = block
|
||||
|
||||
if @request.response
|
||||
# if we've already started collecting the payload, yield it first
|
||||
# before proceeding
|
||||
body = @request.response.body
|
||||
|
||||
body.each do |chunk|
|
||||
on_chunk(chunk)
|
||||
end
|
||||
end
|
||||
|
||||
response.raise_for_status
|
||||
response.close
|
||||
ensure
|
||||
response.close if @response
|
||||
@on_chunk = nil
|
||||
end
|
||||
end
|
||||
@ -69,9 +58,9 @@ module HTTPX
|
||||
private
|
||||
|
||||
def response
|
||||
@session.__send__(:receive_requests, [@request], @connections) until @request.response
|
||||
|
||||
@request.response
|
||||
@response ||= begin
|
||||
@request.response || @session.request(@request)
|
||||
end
|
||||
end
|
||||
|
||||
def respond_to_missing?(meth, *args)
|
||||
@ -105,9 +94,7 @@ module HTTPX
|
||||
|
||||
request = requests.first
|
||||
|
||||
connections = _send_requests(requests)
|
||||
|
||||
StreamResponse.new(request, self, connections)
|
||||
StreamResponse.new(request, self)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module HTTPX
|
||||
VERSION = "1.1.3"
|
||||
VERSION = "1.1.4"
|
||||
end
|
||||
|
@ -21,11 +21,15 @@ module HTTPX
|
||||
|
||||
class Inflater
|
||||
@response: Response
|
||||
@encodings: Array[String]
|
||||
@grpc_encodings: Array[String]
|
||||
|
||||
def initialize: (Response | StreamResponse response) -> void
|
||||
|
||||
def call: (String message) ?{ (String) -> void } -> String
|
||||
|
||||
private
|
||||
|
||||
def grpc_encodings: () -> Array[String]
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -2,6 +2,10 @@ module HTTPX
|
||||
class StreamResponse
|
||||
include _ToS
|
||||
|
||||
@request: Request & RequestMethods
|
||||
@session: sessionStream
|
||||
@on_chunk: ^(String) -> void | nil
|
||||
|
||||
def each: () { (String) -> void } -> void
|
||||
| () -> Enumerable[String]
|
||||
|
||||
@ -10,10 +14,11 @@ module HTTPX
|
||||
|
||||
def on_chunk: (string) -> void
|
||||
|
||||
def initialize: (Request, Session) -> void
|
||||
|
||||
private
|
||||
|
||||
def response: () -> response
|
||||
def initialize: (Request, Session, Array[Connection]) -> untyped
|
||||
end
|
||||
|
||||
module Plugins
|
||||
|
Loading…
x
Reference in New Issue
Block a user