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