github.com/hsdp/go-swagger@v0.19.0/generator/templates/client/response.gotmpl (about) 1 {{ define "clientresponse" }}// New{{ pascalize .Name }} creates a {{ pascalize .Name }} with default headers values 2 func New{{ pascalize .Name }}({{ if eq .Code -1 }}code int{{ end }}{{ if .Schema }}{{ if and (eq .Code -1) .Schema.IsStream }}, {{end}}{{ if .Schema.IsStream }}writer io.Writer{{ end }}{{ end }}) *{{ pascalize .Name }} { 3 return &{{ pascalize .Name }}{ 4 {{ if eq .Code -1 }}_statusCode: code, 5 {{ end }}{{ range .Headers }}{{ if .HasDefault }}{{ pascalize .Name }}: {{ printf "%#v" .Default }}, 6 {{ end }}{{ end }}{{ if .Schema }}{{ if .Schema.IsStream }}Payload: writer, 7 {{ end }}{{ end }}} 8 } 9 10 /*{{ pascalize .Name}} handles this case with default header values. 11 12 {{ if .Description }}{{ blockcomment .Description }}{{else}}{{ pascalize .Name }} {{ humanize .Name }}{{end}} 13 */ 14 type {{ pascalize .Name }} struct { 15 {{ if eq .Code -1 }} 16 _statusCode int 17 18 {{ end }}{{ range .Headers }}{{ if .Description }}/*{{ blockcomment .Description }} 19 */{{ end }} 20 {{ pascalize .Name }} {{ .GoType }} 21 {{ end }} 22 {{ if .Schema }} 23 Payload {{ if and (not .Schema.IsBaseType) (not .Schema.IsInterface) .Schema.IsComplexObject (not .Schema.IsStream) }}*{{ end }}{{ if (not .Schema.IsStream) }}{{ .Schema.GoType }}{{ else }}io.Writer{{end}} 24 {{ end }} 25 }{{ if eq .Code -1 }} 26 27 // Code gets the status code for the {{ humanize .Name }} response 28 func ({{ .ReceiverName }} *{{ pascalize .Name }}) Code() int { 29 return {{ .ReceiverName }}._statusCode 30 } 31 {{ end }} 32 33 34 func ({{ .ReceiverName }} *{{ pascalize .Name }}) Error() string { 35 return fmt.Sprintf("[{{ upper .Method }} {{ .Path }}][%d] {{ if .Name }}{{ .Name }} {{ else }}unknown error {{ end }}{{ if .Schema }} %+v{{ end }}", {{ if eq .Code -1 }}{{ .ReceiverName }}._statusCode{{ else }}{{ .Code }}{{ end }}{{ if .Schema }}, o.Payload{{ end }}) 36 } 37 38 39 func ({{ .ReceiverName }} *{{ pascalize .Name }}) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { 40 {{ range .Headers }} 41 // response header {{.Name}} 42 {{if .Converter }}{{ camelize .Name }}, err := {{ .Converter }}(response.GetHeader("{{ .Name }}")) 43 if err != nil { 44 return errors.InvalidType({{ .Path }}, "header", "{{ .GoType }}", response.GetHeader("{{ .Name }}")) 45 } 46 {{ .ReceiverName }}.{{ pascalize .Name }} = {{ camelize .Name }} 47 {{ else if .IsCustomFormatter }} 48 {{ camelize .Name }}, err := formats.Parse({{ printf "%q" .SwaggerFormat }}, response.GetHeader("{{ .Name }}")) 49 if err != nil { 50 return errors.InvalidType({{ .Path }}, "header", "{{ .GoType }}", response.GetHeader("{{ .Name }}")) 51 } 52 {{ .ReceiverName }}.{{ pascalize .Name }} = *({{ camelize .Name }}.(*{{ .GoType }})) 53 {{ else}}{{ .ReceiverName }}.{{ pascalize .Name }} = response.GetHeader("{{ .Name }}") 54 {{end}} 55 {{ end }} 56 {{ if .Schema }} 57 {{ if .Schema.IsBaseType }} 58 // response payload as interface type 59 payload, err := {{ toPackageName .ModelsPackage }}.Unmarshal{{ stripPackage .Schema.GoType ( toPackageName .ModelsPackage ) }}{{ if .Schema.IsArray}}Slice{{ end }}(response.Body(), consumer) 60 if err != nil { 61 return err 62 } 63 {{ .ReceiverName }}.Payload = payload 64 {{ else if .Schema.IsComplexObject }} 65 {{ .ReceiverName }}.Payload = new({{ .Schema.GoType }}) 66 {{ end }}{{ if not .Schema.IsBaseType }} 67 // response payload 68 if err := consumer.Consume(response.Body(), {{ if not (or .Schema.IsComplexObject .Schema.IsStream) }}&{{ end}}{{ .ReceiverName }}.Payload); err != nil && err != io.EOF { 69 return err 70 } 71 {{ end }}{{ end }} 72 return nil 73 } 74 {{ end }}// Code generated by go-swagger; DO NOT EDIT. 75 76 77 {{ if .Copyright -}}// {{ comment .Copyright -}}{{ end }} 78 79 80 package {{ .Package }} 81 82 // This file was generated by the swagger tool. 83 // Editing this file might prove futile when you re-run the swagger generate command 84 85 86 import ( 87 "io" 88 "net/http" 89 90 "github.com/go-openapi/runtime" 91 "github.com/go-openapi/swag" 92 "github.com/go-openapi/errors" 93 "github.com/go-openapi/validate" 94 "github.com/go-openapi/runtime" 95 96 strfmt "github.com/go-openapi/strfmt" 97 98 {{ range .DefaultImports }}{{ printf "%q" .}} 99 {{ end }} 100 {{ range $key, $value := .Imports }}{{ $key }} {{ printf "%q" $value }} 101 {{ end }} 102 ) 103 104 // {{ pascalize .Name }}Reader is a Reader for the {{ pascalize .Name }} structure. 105 type {{ pascalize .Name }}Reader struct { 106 formats strfmt.Registry{{ if .HasStreamingResponse }} 107 writer io.Writer{{ end }} 108 } 109 110 // ReadResponse reads a server response into the received {{ .ReceiverName }}. 111 func ({{ .ReceiverName }} *{{ pascalize .Name }}Reader) ReadResponse(response runtime.ClientResponse, consumer runtime.Consumer) (interface{}, error) { 112 {{ if .Responses}}switch response.Code() { 113 {{ end }}{{ range .Responses }} 114 case {{ .Code }}: 115 result := New{{ pascalize .Name }}({{ if .Schema }}{{ if .Schema.IsStream }}{{ $.ReceiverName }}.writer{{ end }}{{ end }}) 116 if err := result.readResponse(response, consumer, {{ $.ReceiverName }}.formats); err != nil { 117 return nil, err 118 } 119 return {{ if .IsSuccess }}result, nil{{else}}nil, result{{end}} 120 {{end}}{{ if .DefaultResponse }}{{ with .DefaultResponse }} 121 {{ if $.Responses}}default: 122 {{ end }}result := New{{ pascalize .Name }}(response.Code(){{ if .Schema }}{{ if .Schema.IsStream }}, {{ $.ReceiverName }}.writer{{ end }}{{ end }}) 123 if err := result.readResponse(response, consumer, {{ $.ReceiverName }}.formats); err != nil { 124 return nil, err 125 } 126 if response.Code() / 100 == 2 { 127 return result, nil 128 } 129 return nil, result{{ end }}{{else}} 130 {{ if $.Responses}}default: 131 {{ end }}return nil, runtime.NewAPIError("unknown error", response, response.Code()){{ end }} 132 {{ if .Responses}}}{{ end }} 133 } 134 135 {{ range .Responses }} 136 {{ template "clientresponse" . }} 137 {{ end }} 138 {{ if .DefaultResponse }} 139 {{ template "clientresponse" .DefaultResponse }} 140 {{ end }} 141 142 {{ range .ExtraSchemas }} 143 /*{{ pascalize .Name }} {{ template "docstring" . }} 144 swagger:model {{ .Name }} 145 */ 146 {{ template "schema" . }} 147 {{ end }}