Class: HTTParty::Request
- Inherits:
-
Object
- Object
- HTTParty::Request
- Defined in:
- lib/httparty/request.rb
Overview
:nodoc:
Constant Summary collapse
- SupportedHTTPMethods =
[ Net::HTTP::Get, Net::HTTP::Post, Net::HTTP::Patch, Net::HTTP::Put, Net::HTTP::Delete, Net::HTTP::Head, Net::HTTP::Options, Net::HTTP::Move, Net::HTTP::Copy ]
- SupportedURISchemes =
[URI::HTTP, URI::HTTPS, URI::Generic]
- NON_RAILS_QUERY_STRING_NORMALIZER =
Proc.new do |query| Array(query).sort_by { |a| a[0].to_s }.map do |key, value| if value.nil? key.to_s elsif value.is_a?(Array) value.map {|v| "#{key}=#{URI.encode(v.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))}"} else HashConversions.to_params(key => value) end end.flatten.join('&') end
Instance Attribute Summary collapse
-
#http_method ⇒ Object
Returns the value of attribute http_method.
-
#last_response ⇒ Object
Returns the value of attribute last_response.
-
#last_uri ⇒ Object
Returns the value of attribute last_uri.
-
#options ⇒ Object
Returns the value of attribute options.
-
#path ⇒ Object
Returns the value of attribute path.
-
#redirect ⇒ Object
Returns the value of attribute redirect.
Instance Method Summary collapse
- #base_uri ⇒ Object
- #connection_adapter ⇒ Object
- #format ⇒ Object
-
#initialize(http_method, path, o = {}) ⇒ Request
constructor
A new instance of Request.
- #parser ⇒ Object
- #perform(&block) ⇒ Object
- #raw_body ⇒ Object
- #request_uri(uri) ⇒ Object
- #uri ⇒ Object
Constructor Details
#initialize(http_method, path, o = {}) ⇒ Request
Returns a new instance of Request.
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/httparty/request.rb', line 32 def initialize(http_method, path, o={}) self.http_method = http_method self.path = path self. = { :limit => o.delete(:no_follow) ? 1 : 5, :assume_utf16_is_big_endian => true, :default_params => {}, :follow_redirects => true, :parser => Parser, :connection_adapter => ConnectionAdapter }.merge(o) end |
Instance Attribute Details
#http_method ⇒ Object
Returns the value of attribute http_method.
29 30 31 |
# File 'lib/httparty/request.rb', line 29 def http_method @http_method end |
#last_response ⇒ Object
Returns the value of attribute last_response.
29 30 31 |
# File 'lib/httparty/request.rb', line 29 def last_response @last_response end |
#last_uri ⇒ Object
Returns the value of attribute last_uri.
29 30 31 |
# File 'lib/httparty/request.rb', line 29 def last_uri @last_uri end |
#options ⇒ Object
Returns the value of attribute options.
29 30 31 |
# File 'lib/httparty/request.rb', line 29 def @options end |
#path ⇒ Object
Returns the value of attribute path.
30 31 32 |
# File 'lib/httparty/request.rb', line 30 def path @path end |
#redirect ⇒ Object
Returns the value of attribute redirect.
29 30 31 |
# File 'lib/httparty/request.rb', line 29 def redirect @redirect end |
Instance Method Details
#base_uri ⇒ Object
72 73 74 |
# File 'lib/httparty/request.rb', line 72 def base_uri redirect ? "#{@last_uri.scheme}://#{@last_uri.host}" : [:base_uri] end |
#connection_adapter ⇒ Object
84 85 86 |
# File 'lib/httparty/request.rb', line 84 def connection_adapter [:connection_adapter] end |
#format ⇒ Object
76 77 78 |
# File 'lib/httparty/request.rb', line 76 def format [:format] || (format_from_mimetype(last_response['content-type']) if last_response) end |
#parser ⇒ Object
80 81 82 |
# File 'lib/httparty/request.rb', line 80 def parser [:parser] end |
#perform(&block) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/httparty/request.rb', line 88 def perform(&block) validate setup_raw_request chunked_body = nil self.last_response = http.request(@raw_request) do |http_response| if block chunks = [] http_response.read_body do |fragment| chunks << fragment block.call(fragment) end chunked_body = chunks.join end end handle_deflation unless http_method == Net::HTTP::Head handle_response(chunked_body, &block) end |
#raw_body ⇒ Object
110 111 112 |
# File 'lib/httparty/request.rb', line 110 def raw_body @raw_request.body end |
#request_uri(uri) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/httparty/request.rb', line 49 def request_uri(uri) if uri.respond_to? :request_uri uri.request_uri else uri.path end end |
#uri ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/httparty/request.rb', line 57 def uri new_uri = path.relative? ? URI.parse("#{base_uri}#{path}") : path.clone # avoid double query string on redirects [#12] unless redirect new_uri.query = query_string(new_uri) end unless SupportedURISchemes.include? new_uri.class raise UnsupportedURIScheme, "'#{new_uri}' Must be HTTP, HTTPS or Generic" end @last_uri = new_uri end |