From 281fad981a091ba6cd09a928b742ef90c27cca25 Mon Sep 17 00:00:00 2001 From: Nikolaos Anastopoulos Date: Thu, 23 Jan 2025 01:03:50 +0200 Subject: [PATCH 1/2] Implement response info in streaming API. (#48) --- lib/async/http/faraday/adapter.rb | 8 ++++---- test/async/http/faraday/adapter.rb | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/async/http/faraday/adapter.rb b/lib/async/http/faraday/adapter.rb index d0c25dc..c94ae4a 100644 --- a/lib/async/http/faraday/adapter.rb +++ b/lib/async/http/faraday/adapter.rb @@ -179,19 +179,19 @@ def perform_request(env) response = env.stream_response do |&on_data| response = client.call(request) + save_response(env, response.status, nil, response.headers, finished: false) + response.each do |chunk| on_data.call(chunk) end response end - - save_response(env, response.status, nil, response.headers) else response = client.call(request) - - save_response(env, response.status, encoded_body(response), response.headers) end + + save_response(env, response.status, encoded_body(response), response.headers) end end diff --git a/test/async/http/faraday/adapter.rb b/test/async/http/faraday/adapter.rb index 5bd0494..ef7a633 100644 --- a/test/async/http/faraday/adapter.rb +++ b/test/async/http/faraday/adapter.rb @@ -198,16 +198,20 @@ def get_response(url = bound_url, path = '/index', adapter_options: {}) builder.adapter :async_http end - chunks = [] + streamed = [] + env = nil response = client.get(bound_url) do |request| - request.options.on_data = proc do |chunk| - chunks << chunk + request.options.on_data = proc do |chunk, size, block_env| + streamed << [chunk, size] + env ||= block_env end end - expect(response.body).to be_nil - expect(chunks).to be == ["chunk0", "chunk1", "chunk2"] + expect(response.body).to be(:empty?) + expect(streamed).to be == [["chunk0", 6], ["chunk1", 12], ["chunk2", 18]] + expect(env).to be_a(Faraday::Env) + expect(env.status).to be == 200 end end end From e0d2cd36f0e31db0655dba1d18de52f61078828b Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Fri, 24 Jan 2025 11:55:06 +1300 Subject: [PATCH 2/2] Update test/async/http/faraday/adapter.rb --- test/async/http/faraday/adapter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/async/http/faraday/adapter.rb b/test/async/http/faraday/adapter.rb index ef7a633..67ffd3c 100644 --- a/test/async/http/faraday/adapter.rb +++ b/test/async/http/faraday/adapter.rb @@ -211,7 +211,7 @@ def get_response(url = bound_url, path = '/index', adapter_options: {}) expect(response.body).to be(:empty?) expect(streamed).to be == [["chunk0", 6], ["chunk1", 12], ["chunk2", 18]] expect(env).to be_a(Faraday::Env) - expect(env.status).to be == 200 + expect(env).to have_attributes(status: be == 200) end end end