summaryrefslogtreecommitdiff
path: root/cmd/generate/templates.go.tmpl
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/generate/templates.go.tmpl')
-rw-r--r--cmd/generate/templates.go.tmpl62
1 files changed, 62 insertions, 0 deletions
diff --git a/cmd/generate/templates.go.tmpl b/cmd/generate/templates.go.tmpl
new file mode 100644
index 0000000..9201ebf
--- /dev/null
+++ b/cmd/generate/templates.go.tmpl
@@ -0,0 +1,62 @@
+package {{ .PackageName }}
+
+{{ range $_, $fn := .Functions }}
+func hh_{{ $fn.Name }}[S any](s S, w http.ResponseWriter, r *http.Request) {
+ {{- if $fn.DoParseForm }}
+ if err := r.ParseForm(); err != nil {
+ panic("todo: Bad request")
+ }
+ {{ end }}
+ {{ range $_, $f := $fn.RequestTypeFields }}
+ {{ if eq $f.TypeDef "*http.Request" }}
+ {{ continue }}
+ {{ end }}
+ var {{ $f.Name }}0 string
+ {{- if $f.Optional }}
+ {{ $f.Name }}Skipped := false
+ {{- end }}
+ {{- if eq $f.Extractor "form" }}
+ {{ $f.Name }}1 := r.Form[{{ $f.NameInReq | quote }}]
+ if len({{ $f.Name }}1) != 0 {
+ {{ $f.Name }} = {{ $f.Name }}1[0]
+ } else {
+ {{- if not $f.Optional }}
+ panic("todo: Bad request: form value " + {{ $f.NameInReq | quote }} + " missing")
+ {{- else }}
+ {{ $f.Name }}Skipped = true
+ {{- end }}
+ }
+ {{ else if eq $f.Extractor "cookie" }}
+ {{ $f.Name }}1, _ := r.Cookie({{ $f.NameInReq | quote }})
+ if {{ $f.Name }}1 != nil {
+ {{ $f.Name }} = {{ $f.Name }}1.Value
+ } else {
+ {{- if not $f.Optional }}
+ panic("todo: Bad request: cookie " + {{ $f.NameInReq | quote }} + " missing")
+ {{- else }}
+ {{ $f.Name }}Skipped = true
+ {{- end }}
+ }
+ {{ else }}
+ {{ error }}
+ {{ end -}}
+ {{ if eq $f.TypeDef "string" -}}
+ {{ $f.Name }} := {{ $f.Name }}0
+ {{ else if eq $f.TypeDef "int" -}}
+ var {{ $f.Name }} int
+ {{ if $f.Optional }} if !{{ $f.Name }}Skipped { {{ end -}}
+ var err error
+ {{ $f.Name }}, err = strconv.Atoi({{ $f.Name }}0)
+ if err != nil {
+ panic("todo: Bad request: " + {{ $f.NameInReq | quote }} + " must be a valid int")
+ }
+ {{ if $f.Optional }} } {{ end }}
+ {{ end }}
+ {{ end }}
+ {{ $fn.Name }}(w, {{ $fn.RequestTypeDef }}{
+ {{ range $_, $f := $fn.RequestTypeFields -}}
+ {{ $f.Name }}: {{ $f.Name }},
+ {{ end }}
+ })
+}
+{{ end }}