github.com/kaisawind/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 }}