package request // This file is auto-generated. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // Definitions file that controls how this file is generated: // {{ .Source }} import ( "encoding/json" "github.com/cortezaproject/corteza-server/pkg/payload" "github.com/go-chi/chi" "io" "fmt" "mime/multipart" "net/http" "strings" {{- range .Imports }} {{ normalizeImport . }} {{- end }} ) // dummy vars to prevent // unused imports complain var ( _ = chi.URLParam _ = multipart.ErrMessageTooLarge _ = payload.ParseUint64s ) type ( // Internal API interface {{- range $a := $.Endpoint.Apis }} {{ export $.Endpoint.Entrypoint $a.Name }} struct { {{- range $p := $a.Params.All }} // {{ export $p.Name }} {{ $p.Origin }} parameter // // {{ $p.Title }} {{ export $p.Name }} {{ $p.Type }} {{ $p.FieldTag }} {{ end }} } {{ end }} ) {{- range $a := $.Endpoint.Apis }} // {{ export "New" $.Endpoint.Entrypoint $a.Name }} request func {{ export "New" $.Endpoint.Entrypoint $a.Name }}() *{{ export $.Endpoint.Entrypoint $a.Name }} { return &{{ export $.Endpoint.Entrypoint $a.Name }}{} } // Auditable returns all auditable/loggable parameters func (r {{ export $.Endpoint.Entrypoint $a.Name }}) Auditable() map[string]interface{} { return map[string]interface{}{ {{- range $p := $a.Params.All }} "{{ $p.Name }}": r.{{ export $p.Name }}, {{- end }} } } {{- range $p := $a.Params.All }} // Auditable returns all auditable/loggable parameters func (r {{ export $.Endpoint.Entrypoint $a.Name }}) Get{{ export $p.Name }}() {{ $p.Type }} { return r.{{ export $p.Name }} } {{- end }} // Fill processes request and fills internal variables func (r *{{ export $.Endpoint.Entrypoint $a.Name }}) Fill(req *http.Request) (err error) { if strings.ToLower(req.Header.Get("content-type")) == "application/json" { err = json.NewDecoder(req.Body).Decode(r) switch { case err == io.EOF: err = nil case err != nil: return fmt.Errorf("error parsing http request body: %w", err) } } {{ if $a.Params.Get }} { // GET params tmp := req.URL.Query() {{ range $p := $a.Params.Get }} {{- if or $p.IsSlice $p.HasExplicitParser }} if val, ok := tmp["{{ $p.Name }}[]"]; ok { r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} if err != nil { return err } } else if val, ok := tmp["{{ $p.Name }}"]; ok { r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} if err != nil { return err } } {{- else }} if val, ok := tmp["{{ $p.Name }}"]; ok && len(val) > 0 { r.{{ export $p.Name }}, err = {{ $p.Parser "val[0]" }} if err != nil { return err } } {{- end }} {{- end }} } {{- end }} {{ if $a.Params.Post }} { if err = req.ParseForm(); err != nil { return err } // POST params {{ range $p := $a.Params.Post }} {{ if $p.IsUpload }} if _, r.{{ export $p.Name }}, err = req.FormFile("{{ $p.Name }}"); err != nil { return fmt.Errorf("error processing uploaded file: %w", err) } {{ else }} {{- if or $p.HasExplicitParser }} if val, ok := req.Form["{{ $p.Name }}[]"]; ok { r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} if err != nil { return err } } else if val, ok := req.Form["{{ $p.Name }}"]; ok { r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} if err != nil { return err } } {{- else if or $p.IsSlice }} //if val, ok := req.Form["{{ $p.Name }}[]"]; ok && len(val) > 0 { // r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} // if err != nil { // return err // } //} {{- else }} if val, ok := req.Form["{{ $p.Name }}"]; ok && len(val) > 0 { r.{{ export $p.Name }}, err = {{ $p.Parser "val[0]" }} if err != nil { return err } } {{- end }} {{- end }} {{- end }} } {{ end }} {{ if $a.Params.Path }} { var val string // path params {{ range $p := $a.Params.Path }} val = chi.URLParam(req, "{{ $p.Name }}") r.{{ export $p.Name }}, err = {{ $p.Parser "val" }} if err != nil { return err } {{ end }} } {{ end }} return err } {{- end }}