-- $Id: test_query.lua,v 1.1 2007/01/30 13:02:04 zhaozg Exp $
function pairsofsort (t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0 -- iterator variable
local iter = function () -- iterator function
i = i + 1
if a[i] == nil then
return nil
else return a[i], t[a[i]]
end
end
return iter
end
function dump_tables(lib,name)
print("
T:"..name.."
")
if lib ~= nil then
local vars = {}
local funs = {}
for k,v in pairs(lib) do
if type(v)=="table" then
dump_tables(v,name.."."..k)
elseif type(v)=="function" then
funs[k] = v
else
vars[k] = tostring(v)
end
end
print(name.." const variables
")
for k, v in pairsofsort(vars) do
print (string.format ("V:%s.%s=%s
", name, k, tostring(v)))
end
print(name.." function list
")
for k, v in pairsofsort(funs) do
print (string.format ("F:%s.%s()=%s
", name, k, tostring(v)))
end
end
end
function dump_userdata(ud,name)
print("U:"..name.."
")
if( type(ud)==type(ud)) then
local mt = getmetatable(ud)
print(name.."="..tostring(ud).." metatable="..tostring(mt).."
");
dump_tables(mt,name.."..mt")
end
end
print = ap.print
local req = ap.request_object()
local apreq = ap.apreq_object()
local cgi = nil
local body = nil
local uploads = nil
if (req:method()=="POST") then
body = apreq:body()
dump_userdata(body,"post args")
uploads = apreq:uploads(body):elts()
end
cgi = apreq:args() and apreq:args():elts()
print("Method:",req:method(), "
")
dump_tables(cgi,"args")
if(body) then
dump_tables(body:elts(),"body")
dump_tables(uploads,"uploads")
if (uploads) then
for k, v in pairs(uploads) do
print("Upload name=",k," value=",v)
local param = apreq:upload(body,k)
dump_userdata(param,"paramater")
if(param) then
print("charset=",param:charset(),"encode=",param:encode(apreq:pool()),"tainted=",tostring(param:tainted()),tostring(param),"
")
dump_tables(param:info():elts(),"param.info")
local up = param:upload()
dump_userdata(up,"param.upload")
if(up) then
local len = up:length(1)
print("Upload Length=",len,"
")
local cont = up:flatten(len)
print("Upload content=",cont,"
")
end
end
end
end
end
--local post_data = io.stdin:read"*a"
--io.stdout:write (string.format ("post_data = {%s}", post_data))