summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/net/hippie/client.rb21
-rw-r--r--lib/net/hippie/connection.rb10
-rw-r--r--lib/net/hippie/version.rb2
3 files changed, 24 insertions, 9 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
diff --git a/lib/net/hippie/connection.rb b/lib/net/hippie/connection.rb
index 9b86dc5..392914b 100644
--- a/lib/net/hippie/connection.rb
+++ b/lib/net/hippie/connection.rb
@@ -15,8 +15,14 @@ module Net
@http = http
end
- def run(request)
- @http.request(request)
+ def run(request, &block)
+ if block_given?
+ @http.request(request) do |response|
+ yield response
+ end
+ else
+ @http.request(request)
+ end
end
def build_url_for(path)
diff --git a/lib/net/hippie/version.rb b/lib/net/hippie/version.rb
index 07de45b..bb07582 100644
--- a/lib/net/hippie/version.rb
+++ b/lib/net/hippie/version.rb
@@ -2,6 +2,6 @@
module Net
module Hippie
- VERSION = '1.3.0'
+ VERSION = '1.4.0'
end
end