From 7815d1f381d1632e069ca26c5eacceff82d17e8b Mon Sep 17 00:00:00 2001 From: mo khan Date: Wed, 8 Oct 2025 10:46:50 -0600 Subject: refactor: extract methods --- lib/net/hippie/client.rb | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) (limited to 'lib') 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 -- cgit v1.2.3