Class: Net::HTTPGenericRequest
- Inherits:
-
Object
- Object
- Net::HTTPGenericRequest
- Includes:
- HTTPHeader
- Defined in:
- lib/net/http/generic_request.rb
Overview
HTTPGenericRequest is the parent of the HTTPRequest class. Do not use this directly; use a subclass of HTTPRequest.
Mixes in the HTTPHeader module to provide easier access to HTTP headers.
Direct Known Subclasses
Defined Under Namespace
Classes: Chunker
Instance Attribute Summary collapse
-
#body ⇒ Object
Returns the value of attribute body.
-
#body_stream ⇒ Object
Returns the value of attribute body_stream.
-
#decode_content ⇒ Object
readonly
Automatically set to false if the user sets the Accept-Encoding header.
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#uri ⇒ Object
readonly
Returns the value of attribute uri.
Instance Method Summary collapse
-
#[]=(key, val) ⇒ Object
Don’t automatically decode response content-encoding if the user indicates they want to handle it.
- #body_exist? ⇒ Boolean
-
#exec(sock, ver, path) ⇒ Object
write.
-
#initialize(m, reqbody, resbody, uri_or_path, initheader = nil) ⇒ HTTPGenericRequest
constructor
A new instance of HTTPGenericRequest.
- #inspect ⇒ Object
- #request_body_permitted? ⇒ Boolean
- #response_body_permitted? ⇒ Boolean
-
#set_body_internal(str) ⇒ Object
:nodoc: internal use only.
-
#update_uri(host, port, ssl) ⇒ Object
:nodoc: internal use only.
Methods included from HTTPHeader
#[], #add_field, #basic_auth, #chunked?, #connection_close?, #connection_keep_alive?, #content_length, #content_length=, #content_range, #content_type, #delete, #each_capitalized, #each_capitalized_name, #each_header, #each_name, #each_value, #fetch, #get_fields, #initialize_http_header, #key?, #main_type, #proxy_basic_auth, #range, #range_length, #set_content_type, #set_form, #set_form_data, #set_range, #size, #sub_type, #to_hash, #type_params
Constructor Details
#initialize(m, reqbody, resbody, uri_or_path, initheader = nil) ⇒ HTTPGenericRequest
Returns a new instance of HTTPGenericRequest.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/net/http/generic_request.rb', line 10 def initialize(m, reqbody, resbody, uri_or_path, initheader = nil) @method = m @request_has_body = reqbody @response_has_body = resbody if URI === uri_or_path then @uri = uri_or_path.dup host = @uri.hostname host += ":#{@uri.port}" if @uri.port != @uri.class::DEFAULT_PORT path = uri_or_path.request_uri else @uri = nil host = nil path = uri_or_path end raise ArgumentError, "no HTTP request path given" unless path raise ArgumentError, "HTTP request path is empty" if path.empty? @path = path @decode_content = false if @response_has_body and Net::HTTP::HAVE_ZLIB then if !initheader || !initheader.keys.any? { |k| %w[accept-encoding range].include? k.downcase } then @decode_content = true initheader = initheader ? initheader.dup : {} initheader["accept-encoding"] = "gzip;q=1.0,deflate;q=0.6,identity;q=0.3" end end initialize_http_header initheader self['Accept'] ||= '*/*' self['User-Agent'] ||= 'Ruby' self['Host'] ||= host @body = nil @body_stream = nil @body_data = nil end |
Instance Attribute Details
#body ⇒ Object
Returns the value of attribute body
89 90 91 |
# File 'lib/net/http/generic_request.rb', line 89 def body @body end |
#body_stream ⇒ Object
Returns the value of attribute body_stream
98 99 100 |
# File 'lib/net/http/generic_request.rb', line 98 def body_stream @body_stream end |
#decode_content ⇒ Object (readonly)
Automatically set to false if the user sets the Accept-Encoding header. This indicates they wish to handle Content-encoding in responses themselves.
60 61 62 |
# File 'lib/net/http/generic_request.rb', line 60 def decode_content @decode_content end |
#method ⇒ Object (readonly)
Returns the value of attribute method
53 54 55 |
# File 'lib/net/http/generic_request.rb', line 53 def method @method end |
#path ⇒ Object (readonly)
Returns the value of attribute path
54 55 56 |
# File 'lib/net/http/generic_request.rb', line 54 def path @path end |
#uri ⇒ Object (readonly)
Returns the value of attribute uri
55 56 57 |
# File 'lib/net/http/generic_request.rb', line 55 def uri @uri end |
Instance Method Details
#[]=(key, val) ⇒ Object
Don’t automatically decode response content-encoding if the user indicates they want to handle it.
70 71 72 73 74 |
# File 'lib/net/http/generic_request.rb', line 70 def []=(key, val) # :nodoc: @decode_content = false if key.downcase == 'accept-encoding' super key, val end |
#body_exist? ⇒ Boolean
84 85 86 87 |
# File 'lib/net/http/generic_request.rb', line 84 def body_exist? warn "Net::HTTPRequest#body_exist? is obsolete; use response_body_permitted?" if $VERBOSE response_body_permitted? end |
#exec(sock, ver, path) ⇒ Object
write
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# File 'lib/net/http/generic_request.rb', line 119 def exec(sock, ver, path) #:nodoc: internal use only if @uri if @uri.port == @uri.default_port # [Bug #7650] Amazon ECS API and GFE/1.3 disallow extra default port number self['host'] = @uri.host else self['host'] = "#{@uri.host}:#{@uri.port}" end end if @body send_request_with_body sock, ver, path, @body elsif @body_stream send_request_with_body_stream sock, ver, path, @body_stream elsif @body_data send_request_with_body_data sock, ver, path, @body_data else write_header sock, ver, path end end |
#inspect ⇒ Object
62 63 64 |
# File 'lib/net/http/generic_request.rb', line 62 def inspect "\#<#{self.class} #{@method}>" end |
#request_body_permitted? ⇒ Boolean
76 77 78 |
# File 'lib/net/http/generic_request.rb', line 76 def request_body_permitted? @request_has_body end |
#response_body_permitted? ⇒ Boolean
80 81 82 |
# File 'lib/net/http/generic_request.rb', line 80 def response_body_permitted? @response_has_body end |
#set_body_internal(str) ⇒ Object
:nodoc: internal use only
107 108 109 110 111 112 113 |
# File 'lib/net/http/generic_request.rb', line 107 def set_body_internal(str) #:nodoc: internal use only raise ArgumentError, "both of body argument and HTTPRequest#body set" if str and (@body or @body_stream) self.body = str if str if @body.nil? && @body_stream.nil? && @body_data.nil? && request_body_permitted? self.body = '' end end |
#update_uri(host, port, ssl) ⇒ Object
:nodoc: internal use only
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/net/http/generic_request.rb', line 140 def update_uri(host, port, ssl) # :nodoc: internal use only return unless @uri @uri.host ||= host @uri.port = port scheme = ssl ? 'https' : 'http' # convert the class of the URI unless scheme == @uri.scheme then new_uri = @uri.to_s.sub(/^https?/, scheme) @uri = URI new_uri end @uri end |