mirror of
https://github.com/aykhans/dodo.git
synced 2025-04-20 11:11:26 +00:00
🐛 fix: overrides error key in errsStr map
This commit is contained in:
parent
f8e4180a15
commit
5d1b0626a9
@ -6,7 +6,6 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/aykhans/dodo/config"
|
|
||||||
"github.com/go-playground/validator/v10"
|
"github.com/go-playground/validator/v10"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -24,36 +23,34 @@ func CobraErrorFormater(err error) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func shortenNamespace(namespace string) string {
|
||||||
|
return namespace[strings.Index(namespace, ".")+1:]
|
||||||
|
}
|
||||||
|
|
||||||
func ValidationErrorsFormater(errs validator.ValidationErrors) error {
|
func ValidationErrorsFormater(errs validator.ValidationErrors) error {
|
||||||
errsStr := make(map[string]string)
|
errsStr := make(map[string]string)
|
||||||
for _, err := range errs {
|
for _, err := range errs {
|
||||||
switch err.Tag() {
|
switch err.Tag() {
|
||||||
case "required":
|
case "required":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Field \"%s\" is required", err.Field())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Field \"%s\" is required", err.Field())
|
||||||
case "gte":
|
case "gte":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Value of \"%s\" must be greater than or equal to \"%s\"", err.Field(), err.Param())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Value of \"%s\" must be greater than or equal to \"%s\"", err.Field(), err.Param())
|
||||||
case "lte":
|
case "lte":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Value of \"%s\" must be less than or equal to \"%s\"", err.Field(), err.Param())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Value of \"%s\" must be less than or equal to \"%s\"", err.Field(), err.Param())
|
||||||
case "filepath":
|
case "filepath":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Invalid file path for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Invalid file path for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
||||||
case "http_url":
|
case "http_url":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Invalid URL for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
errsStr[shortenNamespace(err.Namespace())] =
|
||||||
|
fmt.Sprintf("Invalid url for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
||||||
// --------------------------------------| Custom validations |--------------------------------------
|
// --------------------------------------| Custom validations |--------------------------------------
|
||||||
case "http_method":
|
case "http_method":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Invalid HTTP method for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Invalid HTTP method for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
||||||
case "url_map_slice":
|
case "proxy_url":
|
||||||
values := err.Value().(config.ProxySlice)
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Invalid proxy url for \"%s\" field: \"%s\" (it must be http, socks5 or socks5h)", err.Field(), err.Value())
|
||||||
for i, value := range values {
|
|
||||||
if _, ok := value["url"]; !ok {
|
|
||||||
errsStr[fmt.Sprintf("%s[%d]", err.Field(), i)] = fmt.Sprintf("Field \"url\" is required for \"%s\" field", err.Field())
|
|
||||||
} else {
|
|
||||||
errsStr[fmt.Sprintf("%s[%d]", err.Field(), i)] = fmt.Sprintf("Invalid url for \"%s\" field: \"%s\"", err.Field(), value["url"])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case "string_bool":
|
case "string_bool":
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Invalid value for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Invalid value for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
||||||
default:
|
default:
|
||||||
errsStr[err.Field()] = fmt.Sprintf("Invalid value for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
errsStr[shortenNamespace(err.Namespace())] = fmt.Sprintf("Invalid value for \"%s\" field: \"%s\"", err.Field(), err.Value())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NewValidationErrors(errsStr, errs)
|
return NewValidationErrors(errsStr, errs)
|
||||||
|
7
main.go
7
main.go
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/aykhans/dodo/config"
|
"github.com/aykhans/dodo/config"
|
||||||
@ -35,7 +36,11 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
utils.PrintErrAndExit(err)
|
utils.PrintErrAndExit(err)
|
||||||
}
|
}
|
||||||
if err := validator.StructPartial(jsonConfNew, "Proxies"); err != nil {
|
if err := validator.StructFiltered(
|
||||||
|
jsonConfNew,
|
||||||
|
func(ns []byte) bool {
|
||||||
|
return strings.LastIndex(string(ns), "Proxies") == -1
|
||||||
|
}); err != nil {
|
||||||
utils.PrintErrAndExit(
|
utils.PrintErrAndExit(
|
||||||
customerrors.ValidationErrorsFormater(
|
customerrors.ValidationErrorsFormater(
|
||||||
err.(goValidator.ValidationErrors),
|
err.(goValidator.ValidationErrors),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user