Commit 7815d1f

mo khan <mo@mokhan.ca>
2025-10-08 16:46:50
refactor: extract methods tag: v1.4.0
1 parent b712d98
Changed files (1)
lib
net
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