method
read_body
v1_9_2_180 -
Show latest stable
- Class:
WEBrick::HTTPRequest
read_body(socket, block)private
No documentation available.
# File lib/webrick/httprequest.rb, line 294
def read_body(socket, block)
return unless socket
if tc = self['transfer-encoding']
case tc
when /chunked/o then read_chunked(socket, block)
else raise HTTPStatus::NotImplemented, "Transfer-Encoding: #{tc}."
end
elsif self['content-length'] || @remaining_size
@remaining_size ||= self['content-length'].to_i
while @remaining_size > 0
sz = [@buffer_size, @remaining_size].min
break unless buf = read_data(socket, sz)
@remaining_size -= buf.bytesize
block.call(buf)
end
if @remaining_size > 0 && @socket.eof?
raise HTTPStatus::BadRequest, "invalid body size."
end
elsif BODY_CONTAINABLE_METHODS.member?(@request_method)
raise HTTPStatus::LengthRequired
end
return @body
end