simple-sso/test/alt/ngx.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}),
}