Skip to content

Commit f1e02ca

Browse files
Merge pull request #5 from SpectraLogic/fix-header-params
Improve Header Parameter Parsing
2 parents 5d835a3 + c81ca9b commit f1e02ca

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

modules/openapi-generator/src/main/resources/go-server/controller-api.mustache

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -528,13 +528,24 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
528528
{{/isFile}}
529529
{{/isFormParam}}
530530
{{#isHeaderParam}}
531-
{{paramName}}Param := getPointerOrNilIfEmpty(r.Header.Get("{{baseName}}"))
531+
{{paramName}}ParamValues := r.Header.Values("{{baseName}}")
532532
{{#required}}
533-
if {{paramName}}Param == nil {
533+
if len({{paramName}}ParamValues) == 0 {
534534
c.errorHandler(w, r, &RequiredError{"{{baseName}}"}, nil)
535535
return
536536
}
537537
{{/required}}
538+
{{#isArray}}
539+
{{paramName}}Param := {{paramName}}ParamValues
540+
{{/isArray}}
541+
{{^isArray}}
542+
{{#required}}
543+
{{paramName}}Param := getPointer({{paramName}}ParamValues[0])
544+
{{/required}}
545+
{{^required}}
546+
{{paramName}}Param := getPointerOrNilIfEmpty(r.Header.Get("{{baseName}}"))
547+
{{/required}}
548+
{{/isArray}}
538549
{{/isHeaderParam}}
539550
{{#isBodyParam}}
540551
{{paramName}}Param := {{^isArray}}&{{/isArray}}{{dataType}}{}

samples/openapi3/server/petstore/go/go-petstore/go/api_pet.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
130130
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
131131
return
132132
}
133+
apiKeyParamValues := r.Header.Values("api_key")
133134
apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key"))
134135
result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam)
135136
// If an error occurred, encode the error with the status code

samples/server/petstore/go-api-server/go/api_pet.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
156156
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
157157
return
158158
}
159+
apiKeyParamValues := r.Header.Values("api_key")
159160
apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key"))
160161
result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam)
161162
// If an error occurred, encode the error with the status code

samples/server/petstore/go-chi-server/go/api_pet.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
155155
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
156156
return
157157
}
158+
apiKeyParamValues := r.Header.Values("api_key")
158159
apiKeyParam := getPointerOrNilIfEmpty(r.Header.Get("api_key"))
159160
result, err := c.service.DeletePet(r.Context(), *petIdParam, apiKeyParam)
160161
// If an error occurred, encode the error with the status code

0 commit comments

Comments
 (0)