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.
-
#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.
403 404 405 406 407 408 |
# File 'lib/httpclient/http.rb', line 403 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.
396 397 398 |
# File 'lib/httpclient/http.rb', line 396 def chunk_size @chunk_size end |
#size ⇒ Object (readonly)
Size of body. nil when size is unknown (e.g. chunked response).
394 395 396 |
# File 'lib/httpclient/http.rb', line 394 def size @size end |
Instance Method Details
#content ⇒ Object
Returns a message body itself.
488 489 490 |
# File 'lib/httpclient/http.rb', line 488 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.
437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 |
# File 'lib/httpclient/http.rb', line 437 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 part.rewind else dev << part end end 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.
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 |
# File 'lib/httpclient/http.rb', line 467 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.
411 412 413 414 415 416 |
# File 'lib/httpclient/http.rb', line 411 def init_request(body = nil, boundary = nil) @boundary = boundary @positions = {} set_content(body, boundary) @chunk_size = DEFAULT_CHUNK_SIZE end |
#init_response(body = nil) ⇒ Object
Initialize this instance as a response.
419 420 421 422 423 424 425 426 427 428 |
# File 'lib/httpclient/http.rb', line 419 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 end |