class Soba::Parser

Constants

CRLF

Attributes

socket[R]

Public Class Methods

new(socket) click to toggle source
# File lib/soba/parser.rb, line 12
def initialize(socket)
  @socket = socket
  @headers = nil
  @body = nil
end

Public Instance Methods

body() click to toggle source
# File lib/soba/parser.rb, line 44
def body
  @body ||= begin
    StringIO.new(content_length ? socket.read(content_length) : '').binmode
  end
end
content_length() click to toggle source
# File lib/soba/parser.rb, line 40
def content_length
  headers["CONTENT_LENGTH"]&.to_i
end
env()
Alias for: headers
headers() click to toggle source
# File lib/soba/parser.rb, line 18
def headers
  @headers ||= begin
    request_body = ""
    while (line = socket.readline) != CRLF
      request_body << line
    end
    request_body << CRLF
    debug request_body
    ret = PicoHTTPParser.parse_http_request(request_body, @headers ||= {})
    debug ret
    raise InvalidRequest, "ret: #{ret}" if ret < 0
    @headers
  end
end
Also aliased as: env
request_schema() click to toggle source

http or https

# File lib/soba/parser.rb, line 36
def request_schema
  @request_schema ||= server_protocol.split("/").first.downcase
end

Private Instance Methods

debug(*args) click to toggle source
# File lib/soba/parser.rb, line 57
def debug(*args)
  STDERR.puts(args) if ENV["SOBA_DEBUG"] == '1'
end