# File wfo/webclient.rb, line 99 def do_redirect_requests(request) results = [] while true response = do_request_state(request) results << [request, response] if /\A(?:301|302|303|307)\z/ =~ response.code && response['location'] # RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0 # 301 Moved Permanently # 302 Moved Temporarily # RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1 # 301 Moved Permanently # 302 Moved Temporarily # 303 See Other # RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 # 301 Moved Permanently # 302 Found # 303 See Other # 307 Temporary Redirect redirect = URI(response['location']) # Although it violates RFC2616, Location: field may have relative # URI. It is converted to absolute URI using uri as a base URI. redirect = request.uri + redirect if redirect.relative? request = WFO::ReqHTTP.get(redirect) else break end end results end