| Class | HTTP::Message::Body |
| In: |
lib/httpclient/http.rb
|
| Parent: | Object |
Represents HTTP message body.
| DEFAULT_CHUNK_SIZE | = | 1024 * 16 | Default value for chunk_size |
| chunk_size | [RW] | maxbytes of IO#read for streaming request. See DEFAULT_CHUNK_SIZE. |
| size | [R] | Size of body. nil when size is unknown (e.g. chunked response). |
Creates a Message::Body. Use init_request or init_response for acutual initialize.
# File lib/httpclient/http.rb, line 399 def initialize @body = nil @size = nil @positions = nil @chunk_size = nil end
Dumps message body to given dev. dev needs to respond to <<.
Message header must be given as the first argument for performance reason. (header is dumped to dev, too) If no dev (the second argument) given, this method returns a dumped String.
# File lib/httpclient/http.rb, line 431 def dump(header = '', dev = '') if @body.is_a?(Parts) dev << header buf = '' @body.parts.each do |part| if Message.file?(part) reset_pos(part) while !part.read(@chunk_size, buf).nil? dev << buf end else dev << part end end elsif @body dev << header + @body else dev << header end dev end
Dumps message body with chunked encoding to given dev. dev needs to respond to <<.
Message header must be given as the first argument for performance reason. (header is dumped to dev, too) If no dev (the second argument) given, this method returns a dumped String.
# File lib/httpclient/http.rb, line 460 def dump_chunked(header = '', dev = '') dev << header if @body.is_a?(Parts) @body.parts.each do |part| if Message.file?(part) reset_pos(part) dump_chunks(part, dev) else dev << dump_chunk(part) end end dev << (dump_last_chunk + CRLF) elsif @body reset_pos(@body) dump_chunks(@body, dev) dev << (dump_last_chunk + CRLF) end dev end
Initialize this instance as a request.
# File lib/httpclient/http.rb, line 407 def init_request(body = nil, boundary = nil) @boundary = boundary @positions = {} set_content(body, boundary) @chunk_size = DEFAULT_CHUNK_SIZE end