%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, header, value)
end
local response = RESPONSE:format(method, path, version, headers_table)
stream:write(
"HTTP/1.1 ", status, "\r\n",
"Connection: close\r\n",
"Content-Length: ", #response, "\r\n",
"Content-Type: text/html\r\n\r\n", response)
stream:flush()
end
|