webmcp
changeset 342:061ee100f1c1
Bugfix: respect "index" argument to request.get_param{...} function; Allow access to metadata of POST fields in request.get_param{...}
author | jbe |
---|---|
date | Tue Mar 24 23:54:14 2015 +0100 (2015-03-24) |
parents | f59376630f47 |
children | 34bf5f7abe0d |
files | framework/env/request/get_param.lua |
line diff
1.1 --- a/framework/env/request/get_param.lua Tue Mar 24 21:40:46 2015 +0100 1.2 +++ b/framework/env/request/get_param.lua Tue Mar 24 23:54:14 2015 +0100 1.3 @@ -1,10 +1,11 @@ 1.4 --[[-- 1.5 -value = -- value of GET/POST parameter, or value list if multiple == true 1.6 +value = -- value of GET/POST parameter, or value list if multiple == true 1.7 request.get_param{ 1.8 - method = method, -- "GET", "POST", or nil to query both (POST has precedence) 1.9 - name = name, -- field name 1.10 - index = index, -- defaults to 1 to get first occurrence, only applicable if multiple == false 1.11 - multiple = multiple -- boolean to indicate whether to return a single value or a value list 1.12 + method = method, -- "GET", "POST", or nil to query both (POST has precedence) 1.13 + name = name, -- field name 1.14 + index = index, -- defaults to 1 to get first occurrence, only applicable if multiple == false 1.15 + multiple = multiple, -- boolean to indicate whether to return a single value or a value list 1.16 + meta = meta -- set to true to get metadata (table with "file_name" and "content_type") 1.17 } 1.18 1.19 Reads GET/POST parameters directly from the underlaying request. 1.20 @@ -13,20 +14,33 @@ 1.21 1.22 function request.get_param(args) 1.23 local param_list 1.24 - if args.method == "GET" then 1.25 - param_list = request._http_request.get_params_list[args.name] 1.26 - elseif args.method == "POST" then 1.27 - param_list = request._http_request.post_params_list[args.name] 1.28 - elseif not args.method then 1.29 - param_list = request._http_request.post_params_list[args.name] 1.30 - if not param_list[index or 1] then 1.31 + if args.metadata then 1.32 + if args.method == "GET" then 1.33 + param_list = request._http_request.get_metadata_list[args.name] 1.34 + elseif args.method == "POST" then 1.35 + param_list = request._http_request.post_metadata_list[args.name] 1.36 + elseif not args.method then 1.37 + param_list = request._http_request.post_metadata_list[args.name] 1.38 + if not param_list[args.index or 1] then 1.39 + param_list = request._http_request.get_metadata_list[args.name] 1.40 + end 1.41 + end 1.42 + else 1.43 + if args.method == "GET" then 1.44 param_list = request._http_request.get_params_list[args.name] 1.45 + elseif args.method == "POST" then 1.46 + param_list = request._http_request.post_params_list[args.name] 1.47 + elseif not args.method then 1.48 + param_list = request._http_request.post_params_list[args.name] 1.49 + if not param_list[args.index or 1] then 1.50 + param_list = request._http_request.get_params_list[args.name] 1.51 + end 1.52 end 1.53 end 1.54 if args.multiple then 1.55 return param_list 1.56 else 1.57 - return param_list[index or 1] 1.58 + return param_list[args.index or 1] 1.59 end 1.60 end 1.61