24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/onebox/helpers.rb', line 24
def self.fetch_response(location, limit = 5, domain = nil,=nil)
raise Net::HTTPError.new('HTTP redirect too deep', location) if limit == 0
uri = URI(location)
if !uri.host
uri = URI("#{domain}#{location}")
end
http = Net::HTTP.new(uri.host, uri.port)
http.open_timeout = Onebox.options.connect_timeout
http.read_timeout = Onebox.options.timeout
if uri.is_a?(URI::HTTPS)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
response = http.request_get(uri.request_uri,)
cookie = response.get_fields('set-cookie')
if (cookie)
= {'cookie' => cookie.join("")}
end
= nil unless .is_a? Hash
case response
when Net::HTTPSuccess then response
when Net::HTTPRedirection then fetch_response(response['location'], limit - 1, "#{uri.scheme}://#{uri.host}",)
else
response.error!
end
end
|