-- $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))