summaryrefslogtreecommitdiff
path: root/lib/net/hippie
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-10-08 10:46:50 -0600
committermo khan <mo@mokhan.ca>2025-10-08 10:46:50 -0600
commit7815d1f381d1632e069ca26c5eacceff82d17e8b (patch)
tree29b3d98c909e2e62e1b38ca73ed8b8cea350b0cb /lib/net/hippie
parentb712d986f5beb2a14d22903319de64435808f573 (diff)
refactor: extract methodsv1.4.0
Diffstat (limited to 'lib/net/hippie')
-rw-r--r--lib/net/hippie/client.rb35
1 files changed, 18 insertions, 17 deletions
diff --git a/lib/net/hippie/client.rb b/lib/net/hippie/client.rb
index f8610c2..eebb8b7 100644
--- a/lib/net/hippie/client.rb
+++ b/lib/net/hippie/client.rb
@@ -26,23 +26,10 @@ module Net
def execute(uri, request, limit: follow_redirects, &block)
connection = connection_for(uri)
- if block_given?
- if block.arity == 2
- response = connection.run(request)
- yield(request, response)
- else
- connection.run(request, &block)
- end
- else
- 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
+ return execute_with_block(connection, request, &block) if block_given?
+
+ response = connection.run(request)
+ follow_redirect?(response, limit) ? follow_redirect(connection, response, limit) : response
end
def get(uri, headers: {}, body: {}, &block)
@@ -87,6 +74,20 @@ module Net
attr_reader :default_headers
+ def execute_with_block(connection, request, &block)
+ block.arity == 2 ? yield(request, connection.run(request)) : connection.run(request, &block)
+ end
+
+ def follow_redirect?(response, limit)
+ limit.positive? && response.is_a?(Net::HTTPRedirection)
+ end
+
+ def follow_redirect(connection, response, limit)
+ url = connection.build_url_for(response['location'])
+ request = request_for(Net::HTTP::Get, url)
+ execute(url, request, limit: limit - 1)
+ end
+
def attempt(attempt, max)
yield
rescue *CONNECTION_ERRORS => error