webmcp
diff framework/env/request/get_param_strings.lua @ 222:38e5399718ca
Use request.get_param{...} and request.get_param_strings{...} functions in request.process()
author | jbe |
---|---|
date | Fri Feb 27 17:18:08 2015 +0100 (2015-02-27) |
parents | 25a20bd1f416 |
children | 8f028a0aa114 |
line diff
1.1 --- a/framework/env/request/get_param_strings.lua Wed Feb 25 01:33:27 2015 +0100 1.2 +++ b/framework/env/request/get_param_strings.lua Fri Feb 27 17:18:08 2015 +0100 1.3 @@ -1,14 +1,17 @@ 1.4 --[[-- 1.5 params = 1.6 -request.get_param_strings() 1.7 +request.get_param_strings{ 1.8 + method = method -- "GET", "POST", or nil to query both (POST has precedence) 1.9 + include_internal = include_internal -- set to true to include also parameters starting with "_webmcp_" prefix 1.10 +} 1.11 1.12 This function returns a table with all raw GET/POST parameters as strings or list of strings (except internal parameters like "_webmcp_path" or "_webmcp_id"). Modifications of the returned table have no side effects. 1.13 1.14 --]]-- 1.15 1.16 -local function merge_params(tbl, params_list) 1.17 +local function merge_params(include, tbl, params_list) 1.18 for key, values in pairs(tbl) do 1.19 - if string.match(key, "^_webmcp_") then 1.20 + if not include and string.match(key, "^_webmcp_") then 1.21 -- do nothing 1.22 elseif string.match(key, "%[%]$") then 1.23 tbl[key] = table.new(values) 1.24 @@ -18,9 +21,23 @@ 1.25 end 1.26 end 1.27 1.28 -function request.get_param_strings() 1.29 +function request.get_param_strings(args) 1.30 + local method = nil 1.31 + local include = false 1.32 + if args then 1.33 + method = args.method 1.34 + include = args.include 1.35 + end 1.36 local t = {} 1.37 - merge_params(t, request._http_request.get_params_list) 1.38 - merge_params(t, request._http_request.post_params_list) 1.39 + if not method then 1.40 + merge_params(t, request._http_request.get_params_list, include) 1.41 + merge_params(t, request._http_request.post_params_list, include) 1.42 + elseif method == "GET" then 1.43 + merge_params(t, request._http_request.get_params_list, include) 1.44 + elseif method == "POST" then 1.45 + merge_params(t, request._http_request.post_params_list, include) 1.46 + else 1.47 + error("Invalid method passed to request.get_param_strings{...}") 1.48 + end 1.49 return t 1.50 end