From 845ed41691b52c96d60c80310d141458296962de Mon Sep 17 00:00:00 2001 From: mo khan Date: Tue, 28 Jan 2020 16:50:05 -0700 Subject: Fix bug in redirecting to relative paths --- lib/net/hippie/client.rb | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'lib/net/hippie/client.rb') diff --git a/lib/net/hippie/client.rb b/lib/net/hippie/client.rb index e81a674..2aa8e20 100644 --- a/lib/net/hippie/client.rb +++ b/lib/net/hippie/client.rb @@ -27,11 +27,12 @@ module Net end def execute(uri, request, limit: follow_redirects, &block) - response = http_for(uri).request(request) + http = http_for(uri) + response = http.request(request) if limit.positive? && response.is_a?(Net::HTTPRedirection) - location = response['location'] - request = request_for(Net::HTTP::Get, location) - execute(location, request, limit: limit - 1, &block) + url = build_url_for(http, response['location']) + request = request_for(Net::HTTP::Get, url) + execute(url, request, limit: limit - 1, &block) else block_given? ? yield(request, response) : response end @@ -86,7 +87,7 @@ module Net raise error if attempt == max delay = ((2**attempt) * 0.1) + Random.rand(0.05) # delay + jitter - warn("`#{error.message}` Retry: #{attempt + 1}/#{max} Delay: #{delay}s") + logger.warn("`#{error.message}` #{attempt + 1}/#{max} Delay: #{delay}s") sleep delay end @@ -121,14 +122,16 @@ module Net http.key = private_key end - def warn(message) - logger.warn(message) - end - def run(uri, http_method, headers, body, &block) request = request_for(http_method, uri, headers: headers, body: body) execute(uri, request, &block) end + + def build_url_for(http, path) + return path if path.start_with?('http') + + "#{http.use_ssl? ? 'https' : 'http'}://#{http.address}#{path}" + end end end end -- cgit v1.2.3