From 2cca75cb1d471c90713806e78abd8263d315cb8c Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Fri, 26 Apr 2019 22:04:15 +0200 Subject: [PATCH] upd(codegen): check for func(w,r) in http handlers return --- codegen/templates/http_handlers_inline.tpl | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/codegen/templates/http_handlers_inline.tpl b/codegen/templates/http_handlers_inline.tpl index 4c7077ddd..987da9467 100644 --- a/codegen/templates/http_handlers_inline.tpl +++ b/codegen/templates/http_handlers_inline.tpl @@ -33,9 +33,22 @@ func New{name|expose}({self}h {name|expose}API) *{name|expose} { {call.name|capitalize}: func(w http.ResponseWriter, r *http.Request) { defer r.Body.Close() params := request.New{name|capitalize}{call.name|capitalize}() - resputil.JSON(w, params.Fill(r), func() (interface{}, error) { - return {self}h.{call.name|capitalize}(r.Context(), params) - }) + if err := params.Fill(r); err != nil { + resputil.JSON(w, err) + return + } + if value, err := {self}h.{call.name|capitalize}(r.Context(), params); err != nil { + resputil.JSON(w, err) + return + } else { + switch fn := value.(type) { + case func(http.ResponseWriter, *http.Request): + fn(w, r) + return + } + resputil.JSON(w, value) + return + } }, {/foreach} {rdelim}