Module | RestClient::AbstractResponse |
In: |
lib/rest-client-1.6.3/lib/restclient/abstract_response.rb
|
args | [R] | |
net_http_res | [R] |
# File lib/rest-client-1.6.3/lib/restclient/abstract_response.rb, line 85 def AbstractResponse.beautify_headers(headers) headers.inject({}) do |out, (key, value)| out[key.gsub(/-/, '_').downcase.to_sym] = %w{ set-cookie }.include?(key.downcase) ? value : value.first out end end
# File lib/rest-client-1.6.3/lib/restclient/abstract_response.rb, line 58 def description "#{code} #{STATUSES[code]} | #{(headers[:content_type] || '').gsub(/;.*$/, '')} #{size} bytes\n" end
Follow a redirection
# File lib/rest-client-1.6.3/lib/restclient/abstract_response.rb, line 63 def follow_redirection request = nil, result = nil, & block url = headers[:location] if url !~ /^http/ url = URI.parse(args[:url]).merge(url).to_s end args[:url] = url if request if request.max_redirects == 0 raise MaxRedirectsReached end args[:password] = request.password args[:user] = request.user args[:headers] = request.headers args[:max_redirects] = request.max_redirects - 1 # pass any cookie set in the result if result && result['set-cookie'] args[:headers][:cookies] = (args[:headers][:cookies] || {}).merge(parse_cookie(result['set-cookie'])) end end Request.execute args, &block end
Return the default behavior corresponding to the response code: the response itself for code in 200..206, redirection for 301, 302 and 307 in get and head cases, redirection for 303 and an exception in other cases
# File lib/rest-client-1.6.3/lib/restclient/abstract_response.rb, line 34 def return! request = nil, result = nil, & block if (200..207).include? code self elsif [301, 302, 307].include? code unless [:get, :head].include? args[:method] raise Exceptions::EXCEPTIONS_MAP[code].new(self, code) else follow_redirection(request, result, & block) end elsif code == 303 args[:method] = :get args.delete :payload follow_redirection(request, result, & block) elsif Exceptions::EXCEPTIONS_MAP[code] raise Exceptions::EXCEPTIONS_MAP[code].new(self, code) else raise RequestFailed.new(self, code) end end