diff options
| author | mo khan <mo@mokhan.ca> | 2025-10-08 10:42:46 -0600 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2025-10-08 10:42:46 -0600 |
| commit | 4072dedb8f17040f3dbe1ec8400e2eb87b044c2d (patch) | |
| tree | cd7f30fc71793a914e6d9c4d3d3878b51200d064 /lib/net/hippie/client.rb | |
| parent | 58d4e9be69cf5fbc951bc63858ac899dded47bee (diff) | |
feat: add support for streaming responses
Diffstat (limited to 'lib/net/hippie/client.rb')
| -rw-r--r-- | lib/net/hippie/client.rb | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/lib/net/hippie/client.rb b/lib/net/hippie/client.rb index 340531b..f8610c2 100644 --- a/lib/net/hippie/client.rb +++ b/lib/net/hippie/client.rb @@ -26,13 +26,22 @@ module Net def execute(uri, request, limit: follow_redirects, &block) connection = connection_for(uri) - response = connection.run(request) - if limit.positive? && response.is_a?(Net::HTTPRedirection) - url = connection.build_url_for(response['location']) - request = request_for(Net::HTTP::Get, url) - execute(url, request, limit: limit - 1, &block) + if block_given? + if block.arity == 2 + response = connection.run(request) + yield(request, response) + else + connection.run(request, &block) + end else - block_given? ? yield(request, response) : response + response = connection.run(request) + if limit.positive? && response.is_a?(Net::HTTPRedirection) + url = connection.build_url_for(response['location']) + request = request_for(Net::HTTP::Get, url) + execute(url, request, limit: limit - 1) + else + response + end end end |
