136 lines
2.5 KiB
Lua
136 lines
2.5 KiB
Lua
local var = {}
|
|
local post_var = {}
|
|
local header = {}
|
|
local req_header = {}
|
|
local resp_body = nil
|
|
|
|
local function cookie_time(time)
|
|
return tostring(time)
|
|
end
|
|
|
|
local function now()
|
|
return 1626546790.456
|
|
end
|
|
|
|
local function set_req_header(k, v)
|
|
req_header[k] = v
|
|
var["http_" .. k:lower()] = v
|
|
end
|
|
|
|
local function get_req_header(_, k)
|
|
return req_header[k]
|
|
end
|
|
|
|
local function reset_req_header()
|
|
req_header = {}
|
|
end
|
|
|
|
local function set_header(_, k, v)
|
|
if k == "Set-Cookie" then
|
|
header[k] = {v = v, link = header[k]}
|
|
else
|
|
header[k] = v
|
|
end
|
|
end
|
|
|
|
local function get_header(_, k)
|
|
return header[k]
|
|
end
|
|
|
|
local function reset_header()
|
|
header = {}
|
|
end
|
|
|
|
local function set_var(_, k, v)
|
|
var[k] = v
|
|
end
|
|
|
|
local function get_var(_, k)
|
|
return var[k]
|
|
end
|
|
|
|
local function reset_var()
|
|
var = {}
|
|
end
|
|
|
|
local function set_post_var(_, k, v)
|
|
post_var[k] = v
|
|
end
|
|
|
|
local function get_post_var(_, k)
|
|
return post_var[k]
|
|
end
|
|
|
|
local function reset_post_var()
|
|
post_var = {}
|
|
end
|
|
|
|
local function decode_args(argstr)
|
|
local params = {}
|
|
for p in argstr:gmatch("([^?&=]+[^?&]*)") do
|
|
local eq, _ = p:find("=")
|
|
if eq then
|
|
params[p:sub(1, eq - 1)] = p:sub(eq + 1):lower() -- lower → fake URL-decoding
|
|
else
|
|
params[p] = true
|
|
end
|
|
end
|
|
return params
|
|
end
|
|
|
|
local function escape_uri(uri)
|
|
return uri
|
|
end
|
|
|
|
local function exit(status)
|
|
return status
|
|
end
|
|
|
|
local function redirect(url, status)
|
|
return tostring(status) .. ":" .. url
|
|
end
|
|
|
|
local function reset_resp_body()
|
|
resp_body = nil
|
|
end
|
|
|
|
local function say(set_or_get)
|
|
if set_or_get then
|
|
resp_body = set_or_get
|
|
else
|
|
return resp_body
|
|
end
|
|
end
|
|
|
|
local function log(level, message)
|
|
print(level .. message)
|
|
end
|
|
|
|
return {
|
|
cookie_time = cookie_time,
|
|
decode_args = decode_args,
|
|
exit = exit,
|
|
escape_uri = escape_uri,
|
|
header = setmetatable({}, {__newindex = set_header, __index = get_header}),
|
|
log = log,
|
|
DEBUG = "DEBUG: ",
|
|
INFO = "INFO: ",
|
|
ERROR = "ERROR: ",
|
|
now = now,
|
|
post_var = setmetatable({}, {__newindex = set_post_var, __index = get_post_var}),
|
|
redirect = redirect,
|
|
req = {
|
|
get_post_args = function() return post_var end,
|
|
header = setmetatable({}, {__newindex = function(_,k,v) set_req_header(k,v) end, __index = get_req_header}),
|
|
read_body = function() end,
|
|
reset = reset_req_header,
|
|
set_header = set_req_header,
|
|
},
|
|
reset_header = reset_header,
|
|
reset_post_var = reset_post_var,
|
|
reset_resp_body = reset_resp_body,
|
|
reset_var = reset_var,
|
|
say = say,
|
|
var = setmetatable({}, {__newindex = set_var, __index = get_var}),
|
|
}
|