module Protocol::HTTP::Body::Reader
def body?
Whether there is a body?
def body? @body and !@body.empty? end
def buffered!
Buffer the entire request/response body.
def buffered! if @body @body = @body.finish end # TODO Should this return @body instead? It seems more useful. return self end
def close(error = nil)
Close the connection as quickly as possible. Discards body. May close the underlying connection if necessary to terminate the stream.
def close(error = nil) if @body @body.close(error) @body = nil end end
def discard
def discard if body = @body @body = nil body.discard end return nil end
def each(&block)
Read chunks from the body.
def each(&block) if @body @body.each(&block) @body = nil end end
def finish
Gracefully finish reading the body. This will buffer the remainder of the body.
def finish if @body body = @body.finish @body = nil return body end end
def read
Reads the entire request/response body.
def read if @body buffer = @body.join @body = nil return buffer end end
def save(path, mode = ::File::WRONLY|::File::CREAT|::File::TRUNC, **options)
@parameter mode [Integer] the mode to open the file with.
@parameter path [String] the path to write the body to.
Write the body of the response to the given file path.
def save(path, mode = ::File::WRONLY|::File::CREAT|::File::TRUNC, **options) if @body ::File.open(path, mode, **options) do |file| self.each do |chunk| file.write(chunk) end end end end