2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/didkit/requests.rb', line 2
def get_response(url, options = {})
url = URI(url) unless url.is_a?(URI)
request_options = { use_ssl: true }
if timeout = options[:timeout]
request_options[:open_timeout] = timeout
request_options[:read_timeout] = timeout
end
redirects = 0
max_redirects = options[:max_redirects] || 0
loop do
response = Net::HTTP.start(url.host, url.port, request_options) do |http|
request = Net::HTTP::Get.new(url)
http.request(request)
end
if response.is_a?(Net::HTTPRedirection) && redirects < max_redirects && (location = response['Location'])
url = URI(location.include?('://') ? location : (url.origin + location))
redirects += 1
else
return response
end
end
end
|