class HTTP::Response::Parser
@api private
def add(data)
def add(data) parser << data self rescue LLHttp::Error => e raise IOError, e.message end
def add_body(chunk)
def add_body(chunk) if @chunk @chunk << chunk else @chunk = chunk end end
def add_header(name, value)
def add_header(name, value) @headers.add(name, value) end
def finished?
def finished? @message_finished end
def headers?
def headers? @header_finished end
def initialize
def initialize @handler = Handler.new(self) @parser = LLHttp::Parser.new(@handler, :type => :response) reset end
def mark_header_finished
def mark_header_finished @header_finished = true @status_code = @parser.status_code @http_version = "#{@parser.http_major}.#{@parser.http_minor}" end
def mark_message_finished
def mark_message_finished @message_finished = true end
def read(size)
def read(size) return if @chunk.nil? if @chunk.bytesize <= size chunk = @chunk @chunk = nil else chunk = @chunk.byteslice(0, size) @chunk[0, size] = "" end chunk end
def reset
def reset @parser.reset @handler.reset @header_finished = false @message_finished = false @headers = Headers.new @chunk = nil @status_code = nil @http_version = nil end