| Class | HTTP::Message |
| In: |
lib/httpclient/http.rb
|
| Parent: | Object |
Represents a HTTP message. A message is for a request or a response.
Request message is generated from given parameters internally so users don‘t need to care about it. Response message is the instance that methods of HTTPClient returns so users need to know how to extract HTTP response data from Message.
Some attributes are only for a request or a response, not both.
res = clnt.get(url) p res.content #=> String
res = clnt.get(url) p res.status #=> 200, 501, etc. (Integer)
res = clnt.get(url) res.header['set-cookie'].each do |value| p value end assert_equal(1, res.header['last-modified'].size) p res.header['last-modified'].first
| CRLF | = | "\r\n" |
| mime_type_handler= | -> | set_mime_type_func |
| For backward compatibility. | ||
| mime_type_handler | -> | get_mime_type_func |
| body | [R] |
|
||
| header | [RW] |
|
||
| peer_cert | [RW] |
|
Returns true if the given object is a File. In HTTPClient, a file is;
# File lib/httpclient/http.rb, line 745 def file?(obj) obj.respond_to?(:read) and obj.respond_to?(:path) and obj.respond_to?(:pos) and obj.respond_to?(:pos=) end
Default MIME type handler. See mime_type_handler=.
# File lib/httpclient/http.rb, line 707 def internal_mime_type(path) case path when /\.txt$/i 'text/plain' when /\.(htm|html)$/i 'text/html' when /\.doc$/i 'application/msword' when /\.png$/i 'image/png' when /\.gif$/i 'image/gif' when /\.(jpg|jpeg)$/i 'image/jpeg' else 'application/octet-stream' end end
Returns MIME type handler.
# File lib/httpclient/http.rb, line 684 def mime_type_handler @@mime_type_handler end
Sets MIME type handler.
handler must respond to :call with a single argument :path and returns a MIME type String e.g. ‘text/html’. When the handler returns nil or an empty String, ‘application/octet-stream’ is used.
When you set nil to the handler, internal_mime_type is used instead. The handler is nil by default.
# File lib/httpclient/http.rb, line 679 def mime_type_handler=(handler) @@mime_type_handler = handler end
Returns true if the given query (or body) has a multiple parameter.
# File lib/httpclient/http.rb, line 733 def multiparam_query?(query) query.is_a?(Array) or query.is_a?(Hash) end
Creates a Message instance of general request.
| method: | HTTP method String. |
| uri: | an URI object which represents an URL of web resource. |
| query: | a Hash or an Array of query part of URL. e.g. { "a" =>
"b" } => ‘host/part?a=b’ Give an array to pass
multiple value like
|
| body: | a Hash or an Array of body part. e.g. { "a" => "b" }
=> ‘a=b’. Give an array to pass multiple value like
|
| boundary: | When the boundary given, it is sent as a multipart/form-data using this boundary String. |
# File lib/httpclient/http.rb, line 643 def new_request(method, uri, query = nil, body = nil, boundary = nil) m = new m.header.init_request(method, uri, query) m.body = Body.new m.body.init_request(body || '', boundary) if body m.header.body_size = m.body.size m.header.chunked = true if m.body.size.nil? else m.header.body_size = nil end m end
Sets a new body. header.body_size is updated with new body.size.
# File lib/httpclient/http.rb, line 811 def body=(body) @body = body @header.body_size = @body.size if @header end
Sets ‘Content-Type’ header value. Overrides if already exists.
# File lib/httpclient/http.rb, line 851 def contenttype @header.contenttype end
Returns ‘Content-Type’ header value.
# File lib/httpclient/http.rb, line 856 def contenttype=(contenttype) @header.contenttype = contenttype end
Dumps message (header and body) to given dev. dev needs to respond to <<.
# File lib/httpclient/http.rb, line 798 def dump(dev = '') str = header.dump + CRLF if header.chunked dev = body.dump_chunked(str, dev) elsif body dev = body.dump(str, dev) else dev << str end dev end