diff options
author | Mathias Magnusson <mathias@magnusson.space> | 2024-11-17 20:03:48 +0100 |
---|---|---|
committer | Mathias Magnusson <mathias@magnusson.space> | 2024-11-17 20:03:48 +0100 |
commit | 2778c52e4da52fd33f2df7fc9024252c2470b172 (patch) | |
tree | 1134be8e985f828e31c609ac061b1275ed35f972 /cmd/generate/templates.go.tmpl | |
parent | 19fa57e67bcc4af13a252c17c0e18adab162d2d1 (diff) | |
download | hh-2778c52e4da52fd33f2df7fc9024252c2470b172.tar.gz |
use a template instead of a bunch of buffer.WriteString
Diffstat (limited to 'cmd/generate/templates.go.tmpl')
-rw-r--r-- | cmd/generate/templates.go.tmpl | 62 |
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 }} |