summaryrefslogtreecommitdiff
path: root/lib/net/hippie/client.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/hippie/client.rb')
-rw-r--r--lib/net/hippie/client.rb21
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