class Mocloud::Utils::RedirectFollower
Attributes
body[RW]
redirect_limit[RW]
response[RW]
status[RW]
url[RW]
Public Class Methods
new(url, limit=5)
click to toggle source
# File lib/mocloud/utils/redirect_follower.rb, line 10 def initialize(url, limit=5) @url, @redirect_limit = url, limit end
Public Instance Methods
redirect_url()
click to toggle source
# File lib/mocloud/utils/redirect_follower.rb, line 39 def redirect_url if response['location'].nil? response.body.match(/<a href=\"([^>]+)\">/i)[1] else response['location'] end end
resolve()
click to toggle source
# File lib/mocloud/utils/redirect_follower.rb, line 14 def resolve raise TooManyRedirects if redirect_limit < 0 uri = URI.parse(self.url) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true if uri.scheme == "https" # enable SSL/TLS http.start do http.request_get("#{uri.path}?#{uri.query}") do |res| self.response = res end end if response.kind_of?(Net::HTTPRedirection) self.url = redirect_url self.redirect_limit -= 1 resolve end self.body = response.body self.status = response.code self end