From 8f89bcaf51f5287eea4d10b1363141b28f836527 Mon Sep 17 00:00:00 2001 From: Aki Date: Wed, 3 Mar 2021 23:55:28 +0100 Subject: Extended default handler a bit --- default.lua | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/default.lua b/default.lua index ab15a95..0685f0f 100644 --- a/default.lua +++ b/default.lua @@ -1,14 +1,33 @@ +local RESPONSE = [[ + +plop +

Hello, from plop/lua!

+

You requested %s using %s with %s and: + +
HeaderValue +%s
+]] +local HEADER = "%s%s%s\n" + --- Default client request handler. -- TODO: Add documentation once request and response API are more stable. return function (stream) - local method, path, version, h = stream:read " ", stream:read " ", stream:read "\r\n", stream:read "\r\n\r\n" + local status = 200 + local method, path, version, h = stream:read(" ", " ", "\r\n", "\r\n\r\n") local headers = {} - for header, value in h:gmatch "([^%s:]+)%s*:%s+([^\r\n]*)" do - headers[header:lower()] = value + if h then + for header, value in h:gmatch "([^%s:]+)%s*:%s+([^\r\n]*)" do + headers[header:lower()] = value + end end - - local response_data = [["Hello from plop/lua!"]] - local headers = {Connection="close", ["Content-Length"]=#response_data, ["Content-Type"]="application/json"} - - return {status=200, headers=headers, data=response_data} + 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_data} end -- cgit v1.1