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.
Gets response message body.
res = clnt.get(url) p res.content #=> String
Gets response status code.
res = clnt.get(url) p res.status #=> 200, 501, etc. (Integer)
Gets response header.
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
Returns true if the given object is a File. In HTTPClient, a file is;
must respond to :read for retrieving String chunks.
must respond to :path and returns a path for Content-Disposition.
must respond to :pos and :pos= to rewind for reading. Rewinding is only needed for following HTTP redirect. Some IO impl defines :pos= but raises an Exception for pos= such as StringIO but there’s no problem as far as using it for non-following methods (get/post/etc.)
# File lib/httpclient/http.rb, line 745 745: def file?(obj) 746: obj.respond_to?(:read) and obj.respond_to?(:path) and 747: obj.respond_to?(:pos) and obj.respond_to?(:pos=) 748: end
Default MIME type handler. See mime_type_handler=.
# File lib/httpclient/http.rb, line 707 707: def internal_mime_type(path) 708: case path 709: when /\.txt$/ 710: 'text/plain' 711: when /\.(htm|html)$/ 712: 'text/html' 713: when /\.doc$/ 714: 'application/msword' 715: when /\.png$/ 716: 'image/png' 717: when /\.gif$/ 718: 'image/gif' 719: when /\.(jpg|jpeg)$/ 720: 'image/jpeg' 721: else 722: 'application/octet-stream' 723: end 724: end
Returns true if the given HTTP version allows keep alive connection.
version | Float |
# File lib/httpclient/http.rb, line 728 728: def keep_alive_enabled?(version) 729: version >= 1.1 730: end
Returns MIME type handler.
# File lib/httpclient/http.rb, line 684 684: def mime_type_handler 685: @@mime_type_handler 686: 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 679: def mime_type_handler=(handler) 680: @@mime_type_handler = handler 681: end
Returns true if the given query (or body) has a multiple parameter.
# File lib/httpclient/http.rb, line 733 733: def multiparam_query?(query) 734: query.is_a?(Array) or query.is_a?(Hash) 735: end
Creates a Message instance of ‘CONNECT’ request. ‘CONNECT’ request does not have Body.
uri | an URI that need to connect. Only uri.host and uri.port are used. |
# File lib/httpclient/http.rb, line 623 623: def new_connect_request(uri) 624: m = new 625: m.header.init_connect_request(uri) 626: m.header.body_size = nil 627: m 628: 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 643: def new_request(method, uri, query = nil, body = nil, boundary = nil) 644: m = new 645: m.header.init_request(method, uri, query) 646: m.body = Body.new 647: m.body.init_request(body || '', boundary) 648: if body 649: m.header.body_size = m.body.size 650: m.header.chunked = true if m.body.size.nil? 651: else 652: m.header.body_size = nil 653: end 654: m 655: end
Creates a Message instance of response.
body | a String or an IO of response message body. |
# File lib/httpclient/http.rb, line 659 659: def new_response(body) 660: m = new 661: m.header.init_response(Status::OK) 662: m.body = Body.new 663: m.body.init_response(body) 664: m.header.body_size = m.body.size || 0 665: m 666: end
Sets a new body. header.body_size is updated with new body.size.
# File lib/httpclient/http.rb, line 811 811: def body=(body) 812: @body = body 813: @header.body_size = @body.size if @header 814: end
Returns a content of message body. A String or an IO.
# File lib/httpclient/http.rb, line 861 861: def content 862: @body.content 863: end
Sets ‘Content-Type’ header value. Overrides if already exists.
# File lib/httpclient/http.rb, line 851 851: def contenttype 852: @header.contenttype 853: end
Returns ‘Content-Type’ header value.
# File lib/httpclient/http.rb, line 856 856: def contenttype=(contenttype) 857: @header.contenttype = contenttype 858: end
Dumps message (header and body) to given dev. dev needs to respond to <<.
# File lib/httpclient/http.rb, line 798 798: def dump(dev = '') 799: str = header.dump + CRLF 800: if header.chunked 801: dev = body.dump_chunked(str, dev) 802: elsif body 803: dev = body.dump(str, dev) 804: else 805: dev << str 806: end 807: dev 808: end
Returns HTTP status reason phrase in response. String.
# File lib/httpclient/http.rb, line 841 841: def reason 842: @header.reason_phrase 843: end
Sets HTTP status reason phrase of response. String.
# File lib/httpclient/http.rb, line 846 846: def reason=(reason) 847: @header.reason_phrase = reason 848: end
Returns HTTP status code in response. Integer.
# File lib/httpclient/http.rb, line 827 827: def status 828: @header.status_code 829: end
Sets HTTP status code of response. Integer. Reason phrase is updated, too.
# File lib/httpclient/http.rb, line 836 836: def status=(status) 837: @header.status_code = status 838: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.