diff options
Diffstat (limited to 'lib/net')
| -rw-r--r-- | lib/net/hippie/client.rb | 21 | ||||
| -rw-r--r-- | lib/net/hippie/connection.rb | 10 | ||||
| -rw-r--r-- | lib/net/hippie/version.rb | 2 |
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 |
