From 4763ca863f45bab95c088c9183db8758bffc20bc Mon Sep 17 00:00:00 2001 From: Denis Arh Date: Fri, 26 Apr 2019 09:32:16 +0200 Subject: [PATCH] Better support for array get params in request parsers We now support `&var=1&var=2` and (or!) `&var[]=1&var[]=2`. --- codegen/templates/http_request_inline.tpl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/codegen/templates/http_request_inline.tpl b/codegen/templates/http_request_inline.tpl index 0e64f21de..4851ae335 100644 --- a/codegen/templates/http_request_inline.tpl +++ b/codegen/templates/http_request_inline.tpl @@ -67,7 +67,16 @@ func ({self}Req *{name|expose}{call.name|capitalize}) Fill(r *http.Request) (err {if strtolower($method) === "path"} {self}Req.{param.name|expose} = {if ($param.type !== "string")}{$parsers[$param.type]}({/if}chi.URLParam(r, "{param.name}"){if ($param.type !== "string")}){/if} {elseif (substr($param.type, 0, 2) === '[]' || substr($param.type, -3) === "Set") && isset($parsers[$param.type])} - {self}Req.{param.name|expose} = {$parsers[$param.type]}({if $method === "post"}r.Form["{param.name}"]{else}urlQuery["{param.name}"]{/if}) + {if strtolower($method) === "post"} + {self}Req.{param.name|expose} = {$parsers[$param.type]}(r.Form["{param.name}"]) + {elseif strtolower($method) === "get"} + if val, ok := urlQuery["{param.name}[]"]; ok { + {self}Req.{param.name|expose} = {$parsers[$param.type]}(val) + } else if val, ok = urlQuery["{param.name}"]; ok { + {self}Req.{param.name|expose} = {$parsers[$param.type]}(val) + } + {/if} + {elseif $param.type === "*multipart.FileHeader"} if _, {self}Req.{param.name|expose}, err = r.FormFile("{$param.name}"); err != nil { return errors.Wrap(err, "error procesing uploaded file")