class HTTP::Response::Parser

@api private

Attributes

headers[R]
http_version[R]
parser[R]
status_code[R]

Public Class Methods

new() click to toggle source
# File lib/http/response/parser.rb, line 11
def initialize
  @handler = Handler.new(self)
  @parser = LLHttp::Parser.new(@handler, :type => :response)
  reset
end

Public Instance Methods

<<(data)
Alias for: add
add(data) click to toggle source
# File lib/http/response/parser.rb, line 28
def add(data)
  parser << data

  self
rescue LLHttp::Error => e
  raise IOError, e.message
end
Also aliased as: <<
add_body(chunk) click to toggle source
# File lib/http/response/parser.rb, line 60
def add_body(chunk)
  if @chunk
    @chunk << chunk
  else
    @chunk = chunk
  end
end
add_header(name, value) click to toggle source
# File lib/http/response/parser.rb, line 48
def add_header(name, value)
  @headers.add(name, value)
end
finished?() click to toggle source
# File lib/http/response/parser.rb, line 56
def finished?
  @message_finished
end
headers?() click to toggle source
# File lib/http/response/parser.rb, line 44
def headers?
  @header_finished
end
mark_header_finished() click to toggle source
# File lib/http/response/parser.rb, line 38
def mark_header_finished
  @header_finished = true
  @status_code = @parser.status_code
  @http_version = "#{@parser.http_major}.#{@parser.http_minor}"
end
mark_message_finished() click to toggle source
# File lib/http/response/parser.rb, line 52
def mark_message_finished
  @message_finished = true
end
read(size) click to toggle source
# File lib/http/response/parser.rb, line 68
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
reset() click to toggle source
# File lib/http/response/parser.rb, line 17
def reset
  @parser.reset
  @handler.reset
  @header_finished = false
  @message_finished = false
  @headers = Headers.new
  @chunk = nil
  @status_code = nil
  @http_version = nil
end