%s | %s\n"
--- Default client request handler.
-- TODO: Add documentation once request and response API are more stable.
return function (stream)
local status = 200
local method, path, version, h = stream:read(" ", " ", "\r\n", "\r\n\r\n")
local headers = {}
if h then
for header, value in h:gmatch "([^%s:]+)%s*:%s+([^\r\n]*)" do
headers[header:lower()] = value
end
end
if method == nil or path == nil or version ~= "HTTP/1.1" or h == nil then
status = 400
end
local headers_table = ""
for header, value in pairs(headers) do
headers_table = HEADER:format(headers_table_body, header, value)
end
local response = RESPONSE:format(path, method, version, headers_table_body)
local headers = {Connection="close", ["Content-Length"]=#response, ["Content-Type"]="text/html"}
return {status=status, headers=headers, data=response}
end
|