annotate framework/env/request/get_param_strings.lua @ 347:169dfbd0246a
Prohibit public access to listing of subdirectories in static/ (on BSD systems)
 | author | 
 jbe | 
 | date | 
 Thu Mar 26 03:00:04 2015 +0100 (2015-03-26) | 
 | parents | 
 680777af0293  | 
 | children | 
 5c5f264d123e  | 
 
 | rev | 
   line source | 
| 
jbe@91
 | 
     1 --[[--
 | 
| 
jbe@91
 | 
     2 params =
 | 
| 
jbe@222
 | 
     3 request.get_param_strings{
 | 
| 
jbe@279
 | 
     4   method           = method,           -- "GET", "POST", or nil to query both (POST has precedence)
 | 
| 
jbe@222
 | 
     5   include_internal = include_internal  -- set to true to include also parameters starting with "_webmcp_" prefix
 | 
| 
jbe@222
 | 
     6 }
 | 
| 
jbe@91
 | 
     7 
 | 
| 
jbe@99
 | 
     8 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.
 | 
| 
jbe@91
 | 
     9 
 | 
| 
jbe@91
 | 
    10 --]]--
 | 
| 
jbe@91
 | 
    11 
 | 
| 
jbe@253
 | 
    12 local function merge_params(tbl, params_list, include)
 | 
| 
jbe@221
 | 
    13   for key, values in pairs(tbl) do
 | 
| 
jbe@222
 | 
    14     if not include and string.match(key, "^_webmcp_") then
 | 
| 
jbe@221
 | 
    15       -- do nothing
 | 
| 
jbe@221
 | 
    16     elseif string.match(key, "%[%]$") then
 | 
| 
jbe@221
 | 
    17       tbl[key] = table.new(values)
 | 
| 
jbe@221
 | 
    18     else
 | 
| 
jbe@221
 | 
    19       tbl[key] = values[1]
 | 
| 
jbe@221
 | 
    20     end
 | 
| 
jbe@221
 | 
    21   end
 | 
| 
jbe@221
 | 
    22 end
 | 
| 
jbe@221
 | 
    23 
 | 
| 
jbe@222
 | 
    24 function request.get_param_strings(args)
 | 
| 
jbe@222
 | 
    25   local method = nil
 | 
| 
jbe@222
 | 
    26   local include = false
 | 
| 
jbe@222
 | 
    27   if args then
 | 
| 
jbe@222
 | 
    28     method  = args.method
 | 
| 
jbe@222
 | 
    29     include = args.include
 | 
| 
jbe@222
 | 
    30   end
 | 
| 
jbe@99
 | 
    31   local t = {}
 | 
| 
jbe@222
 | 
    32   if not method then
 | 
| 
jbe@222
 | 
    33     merge_params(t, request._http_request.get_params_list, include)
 | 
| 
jbe@222
 | 
    34     merge_params(t, request._http_request.post_params_list, include)
 | 
| 
jbe@222
 | 
    35   elseif method == "GET" then
 | 
| 
jbe@222
 | 
    36     merge_params(t, request._http_request.get_params_list, include)
 | 
| 
jbe@222
 | 
    37   elseif method == "POST" then
 | 
| 
jbe@222
 | 
    38     merge_params(t, request._http_request.post_params_list, include)
 | 
| 
jbe@222
 | 
    39   else
 | 
| 
jbe@222
 | 
    40     error("Invalid method passed to request.get_param_strings{...}")
 | 
| 
jbe@222
 | 
    41   end
 | 
| 
jbe@99
 | 
    42   return t
 | 
| 
jbe@91
 | 
    43 end
 |