Class: HTTP::Message::Body
- Inherits:
-
Object
- Object
- HTTP::Message::Body
- Defined in:
- lib/httpclient/http.rb
Overview
Represents HTTP message body.
Defined Under Namespace
Classes: Parts
Constant Summary collapse
- DEFAULT_CHUNK_SIZE =
Default value for chunk_size
1024 * 16
Instance Attribute Summary collapse
-
#chunk_size ⇒ Object
maxbytes of IO#read for streaming request.
-
#positions ⇒ Object
Hash that keeps IO positions.
-
#size ⇒ Object
readonly
Size of body.
Instance Method Summary collapse
-
#content ⇒ Object
Returns a message body itself.
-
#dump(header = '', dev = '') ⇒ Object
Dumps message body to given dev.
-
#dump_chunked(header = '', dev = '') ⇒ Object
Dumps message body with chunked encoding to given dev.
-
#init_request(body = nil, boundary = nil) ⇒ Object
Initialize this instance as a request.
-
#init_response(body = nil) ⇒ Object
Initialize this instance as a response.
-
#initialize ⇒ Body
constructor
Creates a Message::Body.
Constructor Details
#initialize ⇒ Body
Creates a Message::Body. Use init_request or init_response for acutual initialize.
456 457 458 459 460 461 |
# File 'lib/httpclient/http.rb', line 456 def initialize @body = nil @size = nil @positions = nil @chunk_size = nil end |
Instance Attribute Details
#chunk_size ⇒ Object
maxbytes of IO#read for streaming request. See DEFAULT_CHUNK_SIZE.
447 448 449 |
# File 'lib/httpclient/http.rb', line 447 def chunk_size @chunk_size end |
#positions ⇒ Object
Hash that keeps IO positions
449 450 451 |
# File 'lib/httpclient/http.rb', line 449 def positions @positions end |
#size ⇒ Object (readonly)
Size of body. nil when size is unknown (e.g. chunked response).
445 446 447 |
# File 'lib/httpclient/http.rb', line 445 def size @size end |
Instance Method Details
#content ⇒ Object
Returns a message body itself.
545 546 547 |
# File 'lib/httpclient/http.rb', line 545 def content @body end |
#dump(header = '', dev = '') ⇒ Object
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.
assert: @size is not nil
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 |
# File 'lib/httpclient/http.rb', line 494 def dump(header = '', dev = '') if @body.is_a?(Parts) dev << header @body.parts.each do |part| if Message.file?(part) reset_pos(part) dump_file(part, dev, @body.sizes[part]) else dev << part end end elsif Message.file?(@body) dev << header reset_pos(@body) dump_file(@body, dev, @size) elsif @body dev << header + @body else dev << header end dev end |
#dump_chunked(header = '', dev = '') ⇒ Object
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.
524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/httpclient/http.rb', line 524 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 |
#init_request(body = nil, boundary = nil) ⇒ Object
Initialize this instance as a request.
464 465 466 467 468 469 470 |
# File 'lib/httpclient/http.rb', line 464 def init_request(body = nil, boundary = nil) @boundary = boundary @positions = {} set_content(body, boundary) @chunk_size = DEFAULT_CHUNK_SIZE self end |
#init_response(body = nil) ⇒ Object
Initialize this instance as a response.
473 474 475 476 477 478 479 480 481 482 483 |
# File 'lib/httpclient/http.rb', line 473 def init_response(body = nil) @body = body if @body.respond_to?(:bytesize) @size = @body.bytesize elsif @body.respond_to?(:size) @size = @body.size else @size = nil end self end |