forked from loafle/openapi-generator-original
[go-server] add field name in parsing error messages (#18533)
Currently when a parsing rule of a field is not respected (eg: min/max value, required, ...), the api only returns an error message without providing the field name to help the user to fix the request. This commit add the field name to the error message to help the user of the API.
This commit is contained in:
parent
10897caf37
commit
230e8ce887
@ -120,7 +120,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isNumber}}
|
||||
@ -134,7 +134,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isFloat}}
|
||||
@ -148,7 +148,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isDouble}}
|
||||
@ -162,7 +162,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isLong}}
|
||||
@ -176,14 +176,14 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isInteger}}
|
||||
{{#isDateTime}}
|
||||
{{paramName}}Param, err := parseTime({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isDateTime}}
|
||||
@ -203,7 +203,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
{{#isEnumRef}}
|
||||
{{paramName}}Param, err := New{{dataType}}FromValue({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isEnumRef}}
|
||||
@ -220,7 +220,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
if query.Has("{{baseName}}"){
|
||||
param, err := parseTime(query.Get("{{baseName}}"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -242,7 +242,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -270,7 +270,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -298,7 +298,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -326,7 +326,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -354,7 +354,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -382,7 +382,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[bool]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -409,7 +409,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isNumber}}
|
||||
@ -421,7 +421,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isFloat}}
|
||||
@ -433,7 +433,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isDouble}}
|
||||
@ -445,7 +445,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isLong}}
|
||||
@ -457,14 +457,14 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isInteger}}
|
||||
{{#items.isDateTime}}
|
||||
{{paramName}}Param, err := parseTimes(query.Get("{{baseName"}}))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/items.isDateTime}}
|
||||
@ -487,7 +487,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
for _, param := range paramSplits {
|
||||
paramEnum, err := New{{items.dataType}}FromValue(param)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{paramName}}Param = append({{paramName}}Param, paramEnum)
|
||||
@ -545,7 +545,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
param, err := ReadFormFileToTempFile(r, "{{baseName}}")
|
||||
{{/isArray}}
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -560,7 +560,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isArray}}{{/isLong}}
|
||||
@ -572,7 +572,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
{{/isArray}}{{/isInteger}}
|
||||
|
@ -14,6 +14,7 @@ var (
|
||||
|
||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||
type ParsingError struct {
|
||||
Param string
|
||||
Err error
|
||||
}
|
||||
|
||||
@ -22,7 +23,11 @@ func (e *ParsingError) Unwrap() error {
|
||||
}
|
||||
|
||||
func (e *ParsingError) Error() string {
|
||||
if e.Param == "" {
|
||||
return e.Err.Error()
|
||||
} else {
|
||||
return e.Param + ": " + e.Err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||
|
@ -166,12 +166,12 @@ func Assert{{classname}}Constraints(obj {{classname}}) error {
|
||||
{{#Vars}}
|
||||
{{#minimum}}
|
||||
if {{#isNullable}}obj.{{name}} != nil && *{{/isNullable}}obj.{{name}} < {{minimum}} {
|
||||
return &ParsingError{Err: errors.New(errMsgMinValueConstraint)}
|
||||
return &ParsingError{Param: "{{name}}", Err: errors.New(errMsgMinValueConstraint)}
|
||||
}
|
||||
{{/minimum}}
|
||||
{{#maximum}}
|
||||
if {{#isNullable}}obj.{{name}} != nil && *{{/isNullable}}obj.{{name}} > {{maximum}} {
|
||||
return &ParsingError{Err: errors.New(errMsgMaxValueConstraint)}
|
||||
return &ParsingError{Param: "{{name}}", Err: errors.New(errMsgMaxValueConstraint)}
|
||||
}
|
||||
{{/maximum}}
|
||||
{{/Vars}}
|
||||
|
@ -129,7 +129,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
apiKeyParam := r.Header.Get("api_key")
|
||||
@ -193,7 +193,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
||||
@ -244,7 +244,7 @@ func (c *PetAPIController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -274,7 +274,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
||||
WithMaximum[int64](5),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
||||
|
@ -190,7 +190,7 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[int32](parseInt32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "int32_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -270,7 +270,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "int64_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "float32_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -298,7 +298,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[float64](parseFloat64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "float64_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -312,7 +312,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ var (
|
||||
|
||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||
type ParsingError struct {
|
||||
Param string
|
||||
Err error
|
||||
}
|
||||
|
||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
||||
}
|
||||
|
||||
func (e *ParsingError) Error() string {
|
||||
if e.Param == "" {
|
||||
return e.Err.Error()
|
||||
} else {
|
||||
return e.Param + ": " + e.Err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||
|
@ -161,7 +161,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
apiKeyParam := r.Header.Get("api_key")
|
||||
@ -185,7 +185,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
}
|
||||
genderParam, err := NewGenderFromValue(params["gender"])
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "gender", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
var speciesParam Species
|
||||
@ -204,7 +204,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
for _, param := range paramSplits {
|
||||
paramEnum, err := NewSpeciesFromValue(param)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "notSpecies", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
||||
@ -270,7 +270,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -283,7 +283,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("bornBefore"){
|
||||
param, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornBefore", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -315,7 +315,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
||||
@ -336,7 +336,7 @@ func (c *PetAPIController) GetPetImageById(w http.ResponseWriter, r *http.Reques
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetImageById(r.Context(), petIdParam)
|
||||
@ -354,7 +354,7 @@ func (c *PetAPIController) GetPetsByTime(w http.ResponseWriter, r *http.Request)
|
||||
params := mux.Vars(r)
|
||||
createdTimeParam, err := parseTime(params["createdTime"])
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "createdTime", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
||||
@ -381,7 +381,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "expr", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -397,7 +397,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "grouping", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -411,7 +411,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "inactive", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -444,7 +444,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "age", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -458,7 +458,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "price", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -469,7 +469,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -483,7 +483,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "old", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -539,7 +539,7 @@ func (c *PetAPIController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -570,7 +570,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -583,7 +583,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -613,7 +613,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -623,7 +623,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
{
|
||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "files", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
||||
WithMaximum[int64](5),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
||||
|
@ -191,7 +191,7 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -258,7 +258,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ var (
|
||||
|
||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||
type ParsingError struct {
|
||||
Param string
|
||||
Err error
|
||||
}
|
||||
|
||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
||||
}
|
||||
|
||||
func (e *ParsingError) Error() string {
|
||||
if e.Param == "" {
|
||||
return e.Err.Error()
|
||||
} else {
|
||||
return e.Param + ": " + e.Err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||
|
@ -160,7 +160,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
apiKeyParam := r.Header.Get("api_key")
|
||||
@ -183,7 +183,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
}
|
||||
genderParam, err := NewGenderFromValue(chi.URLParam(r, "gender"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "gender", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
var speciesParam Species
|
||||
@ -202,7 +202,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
||||
for _, param := range paramSplits {
|
||||
paramEnum, err := NewSpeciesFromValue(param)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "notSpecies", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
||||
@ -267,7 +267,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
||||
if query.Has("bornBefore"){
|
||||
param, err := parseTime(query.Get("bornBefore"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornBefore", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -311,7 +311,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
||||
@ -331,7 +331,7 @@ func (c *PetAPIController) GetPetImageById(w http.ResponseWriter, r *http.Reques
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetImageById(r.Context(), petIdParam)
|
||||
@ -348,7 +348,7 @@ func (c *PetAPIController) GetPetImageById(w http.ResponseWriter, r *http.Reques
|
||||
func (c *PetAPIController) GetPetsByTime(w http.ResponseWriter, r *http.Request) {
|
||||
createdTimeParam, err := parseTime(chi.URLParam(r, "createdTime"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "createdTime", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
||||
@ -375,7 +375,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "expr", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -391,7 +391,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "grouping", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -405,7 +405,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "inactive", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -438,7 +438,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "age", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -452,7 +452,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[float32](parseFloat32),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "price", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -463,7 +463,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
if query.Has("bornAfter"){
|
||||
param, err := parseTime(query.Get("bornAfter"))
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -477,7 +477,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "old", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -532,7 +532,7 @@ func (c *PetAPIController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -562,7 +562,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -575,7 +575,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
||||
{
|
||||
param, err := ReadFormFileToTempFile(r, "file")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -604,7 +604,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
WithRequire[int64](parseInt64),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -614,7 +614,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
||||
{
|
||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "files", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
||||
WithMaximum[int64](5),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
||||
|
@ -190,7 +190,7 @@ func (c *UserAPIController) DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
@ -256,7 +256,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
||||
WithParse[bool](parseBool),
|
||||
)
|
||||
if err != nil {
|
||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
||||
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -23,6 +23,7 @@ var (
|
||||
|
||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||
type ParsingError struct {
|
||||
Param string
|
||||
Err error
|
||||
}
|
||||
|
||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
||||
}
|
||||
|
||||
func (e *ParsingError) Error() string {
|
||||
if e.Param == "" {
|
||||
return e.Err.Error()
|
||||
} else {
|
||||
return e.Param + ": " + e.Err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||
|
Loading…
x
Reference in New Issue
Block a user