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
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