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  

Impressum / About Us