blob: fd1ed70ff891d5d7b20a7e84e0357b92d7db28af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
-- querystring and post body parsing
local function urldecode(s)
return s:gsub('+',' ')
:gsub('%%(%x%x)',function(x)
return string.char(tonumber(x,16))
end)
end
local function parse_qs(s)
local ix = 1
local res = {}
while true do
local _,next_ix,ek,ev = s:find("([^=]+)=([^&]*)&?",ix)
if not ek then break end
local k,v = urldecode(ek), urldecode(ev)
res[k] = v
ix = next_ix + 1
end
return res
end
|