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}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isNumber}}
|
{{/isNumber}}
|
||||||
@ -134,7 +134,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isFloat}}
|
{{/isFloat}}
|
||||||
@ -148,7 +148,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isDouble}}
|
{{/isDouble}}
|
||||||
@ -162,7 +162,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isLong}}
|
{{/isLong}}
|
||||||
@ -176,14 +176,14 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isInteger}}
|
{{/isInteger}}
|
||||||
{{#isDateTime}}
|
{{#isDateTime}}
|
||||||
{{paramName}}Param, err := parseTime({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
{{paramName}}Param, err := parseTime({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isDateTime}}
|
{{/isDateTime}}
|
||||||
@ -203,7 +203,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
{{#isEnumRef}}
|
{{#isEnumRef}}
|
||||||
{{paramName}}Param, err := New{{dataType}}FromValue({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
{{paramName}}Param, err := New{{dataType}}FromValue({{#routers}}{{#mux}}params["{{baseName}}"]{{/mux}}{{#chi}}chi.URLParam(r, "{{baseName}}"){{/chi}}{{/routers}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isEnumRef}}
|
{{/isEnumRef}}
|
||||||
@ -220,7 +220,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
if query.Has("{{baseName}}"){
|
if query.Has("{{baseName}}"){
|
||||||
param, err := parseTime(query.Get("{{baseName}}"))
|
param, err := parseTime(query.Get("{{baseName}}"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,7 +242,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,7 +270,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,7 +326,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,7 +354,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,7 +382,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[bool]({{maximum}}),{{/maximum}}
|
WithMaximum[bool]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -409,7 +409,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isNumber}}
|
{{/items.isNumber}}
|
||||||
@ -421,7 +421,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
WithMaximum[float32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isFloat}}
|
{{/items.isFloat}}
|
||||||
@ -433,7 +433,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
WithMaximum[float64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isDouble}}
|
{{/items.isDouble}}
|
||||||
@ -445,7 +445,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isLong}}
|
{{/items.isLong}}
|
||||||
@ -457,14 +457,14 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isInteger}}
|
{{/items.isInteger}}
|
||||||
{{#items.isDateTime}}
|
{{#items.isDateTime}}
|
||||||
{{paramName}}Param, err := parseTimes(query.Get("{{baseName"}}))
|
{{paramName}}Param, err := parseTimes(query.Get("{{baseName"}}))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/items.isDateTime}}
|
{{/items.isDateTime}}
|
||||||
@ -487,7 +487,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
for _, param := range paramSplits {
|
for _, param := range paramSplits {
|
||||||
paramEnum, err := New{{items.dataType}}FromValue(param)
|
paramEnum, err := New{{items.dataType}}FromValue(param)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{paramName}}Param = append({{paramName}}Param, paramEnum)
|
{{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}}")
|
param, err := ReadFormFileToTempFile(r, "{{baseName}}")
|
||||||
{{/isArray}}
|
{{/isArray}}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,7 +560,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
WithMaximum[int64]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isArray}}{{/isLong}}
|
{{/isArray}}{{/isLong}}
|
||||||
@ -572,7 +572,7 @@ func (c *{{classname}}Controller) {{nickname}}(w http.ResponseWriter, r *http.Re
|
|||||||
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
WithMaximum[int32]({{maximum}}),{{/maximum}}
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "{{baseName}}", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{/isArray}}{{/isInteger}}
|
{{/isArray}}{{/isInteger}}
|
||||||
|
@ -14,7 +14,8 @@ var (
|
|||||||
|
|
||||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||||
type ParsingError struct {
|
type ParsingError struct {
|
||||||
Err error
|
Param string
|
||||||
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Unwrap() error {
|
func (e *ParsingError) Unwrap() error {
|
||||||
@ -22,7 +23,11 @@ func (e *ParsingError) Unwrap() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Error() string {
|
func (e *ParsingError) Error() string {
|
||||||
return e.Err.Error()
|
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
|
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||||
|
@ -166,12 +166,12 @@ func Assert{{classname}}Constraints(obj {{classname}}) error {
|
|||||||
{{#Vars}}
|
{{#Vars}}
|
||||||
{{#minimum}}
|
{{#minimum}}
|
||||||
if {{#isNullable}}obj.{{name}} != nil && *{{/isNullable}}obj.{{name}} < {{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}}
|
{{/minimum}}
|
||||||
{{#maximum}}
|
{{#maximum}}
|
||||||
if {{#isNullable}}obj.{{name}} != nil && *{{/isNullable}}obj.{{name}} > {{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}}
|
{{/maximum}}
|
||||||
{{/Vars}}
|
{{/Vars}}
|
||||||
|
@ -129,7 +129,7 @@ func (c *PetAPIController) DeletePet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
apiKeyParam := r.Header.Get("api_key")
|
apiKeyParam := r.Header.Get("api_key")
|
||||||
@ -193,7 +193,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
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),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,7 +274,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
{
|
{
|
||||||
param, err := ReadFormFileToTempFile(r, "file")
|
param, err := ReadFormFileToTempFile(r, "file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
|||||||
WithMaximum[int64](5),
|
WithMaximum[int64](5),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
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),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[int32](parseInt32),
|
WithParse[int32](parseInt32),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "int32_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,7 +270,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[int64](parseInt64),
|
WithParse[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "int64_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,7 +284,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[float32](parseFloat32),
|
WithParse[float32](parseFloat32),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "float32_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[float64](parseFloat64),
|
WithParse[float64](parseFloat64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "float64_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ var (
|
|||||||
|
|
||||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||||
type ParsingError struct {
|
type ParsingError struct {
|
||||||
Err error
|
Param string
|
||||||
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Unwrap() error {
|
func (e *ParsingError) Unwrap() error {
|
||||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Error() string {
|
func (e *ParsingError) Error() string {
|
||||||
return e.Err.Error()
|
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
|
// 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),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
apiKeyParam := r.Header.Get("api_key")
|
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"])
|
genderParam, err := NewGenderFromValue(params["gender"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "gender", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var speciesParam Species
|
var speciesParam Species
|
||||||
@ -204,7 +204,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
|||||||
for _, param := range paramSplits {
|
for _, param := range paramSplits {
|
||||||
paramEnum, err := NewSpeciesFromValue(param)
|
paramEnum, err := NewSpeciesFromValue(param)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "notSpecies", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
||||||
@ -270,7 +270,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
|||||||
if query.Has("bornAfter"){
|
if query.Has("bornAfter"){
|
||||||
param, err := parseTime(query.Get("bornAfter"))
|
param, err := parseTime(query.Get("bornAfter"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,7 +283,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
|||||||
if query.Has("bornBefore"){
|
if query.Has("bornBefore"){
|
||||||
param, err := parseTime(query.Get("bornBefore"))
|
param, err := parseTime(query.Get("bornBefore"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornBefore", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,7 +315,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
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),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetImageById(r.Context(), petIdParam)
|
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)
|
params := mux.Vars(r)
|
||||||
createdTimeParam, err := parseTime(params["createdTime"])
|
createdTimeParam, err := parseTime(params["createdTime"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "createdTime", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
||||||
@ -381,7 +381,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "expr", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,7 +397,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "grouping", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,7 +411,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "inactive", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,7 +444,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[int64](parseInt64),
|
WithParse[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "age", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,7 +458,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[float32](parseFloat32),
|
WithParse[float32](parseFloat32),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "price", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -469,7 +469,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
if query.Has("bornAfter"){
|
if query.Has("bornAfter"){
|
||||||
param, err := parseTime(query.Get("bornAfter"))
|
param, err := parseTime(query.Get("bornAfter"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,7 +483,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "old", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +539,7 @@ func (c *PetAPIController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -570,7 +570,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,7 +583,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
{
|
{
|
||||||
param, err := ReadFormFileToTempFile(r, "file")
|
param, err := ReadFormFileToTempFile(r, "file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -613,7 +613,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -623,7 +623,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
|||||||
{
|
{
|
||||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "files", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
|||||||
WithMaximum[int64](5),
|
WithMaximum[int64](5),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
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),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,7 +258,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ var (
|
|||||||
|
|
||||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||||
type ParsingError struct {
|
type ParsingError struct {
|
||||||
Err error
|
Param string
|
||||||
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Unwrap() error {
|
func (e *ParsingError) Unwrap() error {
|
||||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Error() string {
|
func (e *ParsingError) Error() string {
|
||||||
return e.Err.Error()
|
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
|
// 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),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
apiKeyParam := r.Header.Get("api_key")
|
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"))
|
genderParam, err := NewGenderFromValue(chi.URLParam(r, "gender"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "gender", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var speciesParam Species
|
var speciesParam Species
|
||||||
@ -202,7 +202,7 @@ func (c *PetAPIController) FilterPetsByCategory(w http.ResponseWriter, r *http.R
|
|||||||
for _, param := range paramSplits {
|
for _, param := range paramSplits {
|
||||||
paramEnum, err := NewSpeciesFromValue(param)
|
paramEnum, err := NewSpeciesFromValue(param)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "notSpecies", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
notSpeciesParam = append(notSpeciesParam, paramEnum)
|
||||||
@ -267,7 +267,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
|||||||
if query.Has("bornAfter"){
|
if query.Has("bornAfter"){
|
||||||
param, err := parseTime(query.Get("bornAfter"))
|
param, err := parseTime(query.Get("bornAfter"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ func (c *PetAPIController) FindPetsByTags(w http.ResponseWriter, r *http.Request
|
|||||||
if query.Has("bornBefore"){
|
if query.Has("bornBefore"){
|
||||||
param, err := parseTime(query.Get("bornBefore"))
|
param, err := parseTime(query.Get("bornBefore"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornBefore", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,7 +311,7 @@ func (c *PetAPIController) GetPetById(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetById(r.Context(), petIdParam)
|
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),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetImageById(r.Context(), petIdParam)
|
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) {
|
func (c *PetAPIController) GetPetsByTime(w http.ResponseWriter, r *http.Request) {
|
||||||
createdTimeParam, err := parseTime(chi.URLParam(r, "createdTime"))
|
createdTimeParam, err := parseTime(chi.URLParam(r, "createdTime"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "createdTime", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
result, err := c.service.GetPetsByTime(r.Context(), createdTimeParam)
|
||||||
@ -375,7 +375,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "expr", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,7 +391,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "grouping", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -405,7 +405,7 @@ func (c *PetAPIController) GetPetsUsingBooleanQueryParameters(w http.ResponseWri
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "inactive", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,7 +438,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[int64](parseInt64),
|
WithParse[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "age", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,7 +452,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[float32](parseFloat32),
|
WithParse[float32](parseFloat32),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "price", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -463,7 +463,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
if query.Has("bornAfter"){
|
if query.Has("bornAfter"){
|
||||||
param, err := parseTime(query.Get("bornAfter"))
|
param, err := parseTime(query.Get("bornAfter"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "bornAfter", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ func (c *PetAPIController) SearchPet(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "old", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -532,7 +532,7 @@ func (c *PetAPIController) UpdatePetWithForm(w http.ResponseWriter, r *http.Requ
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -562,7 +562,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,7 +575,7 @@ func (c *PetAPIController) UploadFile(w http.ResponseWriter, r *http.Request) {
|
|||||||
{
|
{
|
||||||
param, err := ReadFormFileToTempFile(r, "file")
|
param, err := ReadFormFileToTempFile(r, "file")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "file", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -604,7 +604,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
|||||||
WithRequire[int64](parseInt64),
|
WithRequire[int64](parseInt64),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "petId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -614,7 +614,7 @@ func (c *PetAPIController) UploadFileArrayOfFiles(w http.ResponseWriter, r *http
|
|||||||
{
|
{
|
||||||
param, err := ReadFormFilesToTempFiles(r, "files")
|
param, err := ReadFormFilesToTempFiles(r, "files")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "files", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ func (c *StoreAPIController) GetOrderById(w http.ResponseWriter, r *http.Request
|
|||||||
WithMaximum[int64](5),
|
WithMaximum[int64](5),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "orderId", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
result, err := c.service.GetOrderById(r.Context(), orderIdParam)
|
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),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,7 +256,7 @@ func (c *UserAPIController) LoginUser(w http.ResponseWriter, r *http.Request) {
|
|||||||
WithParse[bool](parseBool),
|
WithParse[bool](parseBool),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.errorHandler(w, r, &ParsingError{Err: err}, nil)
|
c.errorHandler(w, r, &ParsingError{Param: "boolean_test", Err: err}, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@ var (
|
|||||||
|
|
||||||
// ParsingError indicates that an error has occurred when parsing request parameters
|
// ParsingError indicates that an error has occurred when parsing request parameters
|
||||||
type ParsingError struct {
|
type ParsingError struct {
|
||||||
Err error
|
Param string
|
||||||
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Unwrap() error {
|
func (e *ParsingError) Unwrap() error {
|
||||||
@ -31,7 +32,11 @@ func (e *ParsingError) Unwrap() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ParsingError) Error() string {
|
func (e *ParsingError) Error() string {
|
||||||
return e.Err.Error()
|
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
|
// RequiredError indicates that an error has occurred when parsing request parameters
|
||||||
|
Loading…
x
Reference in New Issue
Block a user