diff options
author | ubq323 <ubq323@ubq323.website> | 2024-06-18 22:46:31 +0100 |
---|---|---|
committer | ubq323 <ubq323@ubq323.website> | 2024-06-18 22:46:31 +0100 |
commit | 3a6c6b00eb4c62b24c5e5ca670142ac5a00d7847 (patch) | |
tree | ea841da8e25da3489f6ed0c050c2213095e981a8 /qs.lua |
Diffstat (limited to 'qs.lua')
-rw-r--r-- | qs.lua | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -0,0 +1,26 @@ +-- 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 + +return { + urldecode = urldecode, + parse_qs = parse_qs, +} |