lib/onebox/helpers.rb in onebox-1.5.5 vs lib/onebox/helpers.rb in onebox-1.5.6
- old
+ new
@@ -19,8 +19,38 @@
def self.clean(html)
html.gsub(/<[^>]+>/, ' ').gsub(/\n/, '')
end
+ def self.fetch_response(location, limit = 5, domain = nil,headers=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,headers)
+
+ cookie = response.get_fields('set-cookie')
+ if (cookie)
+ header = {'cookie' => cookie.join("")}
+ end
+ header = nil unless header.is_a? Hash
+
+ case response
+ when Net::HTTPSuccess then response
+ when Net::HTTPRedirection then fetch_response(response['location'], limit - 1, "#{uri.scheme}://#{uri.host}",header)
+ else
+ response.error!
+ end
+ end
end
end