summaryrefslogtreecommitdiff
path: root/lib/net/hippie
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/hippie')
-rw-r--r--lib/net/hippie/client.rb21
-rw-r--r--lib/net/hippie/version.rb2
2 files changed, 13 insertions, 10 deletions
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
diff --git a/lib/net/hippie/version.rb b/lib/net/hippie/version.rb
index ffa6fdf..007303b 100644
--- a/lib/net/hippie/version.rb
+++ b/lib/net/hippie/version.rb
@@ -2,6 +2,6 @@
module Net
module Hippie
- VERSION = '0.3.1'
+ VERSION = '0.3.2'
end
end