|
@@ -1,68 +1,58 @@
|
|
|
package api
|
|
|
|
|
|
import (
|
|
|
- "github.com/0xJacky/Nginx-UI/logger"
|
|
|
- "github.com/gin-gonic/gin"
|
|
|
- "github.com/gin-gonic/gin/binding"
|
|
|
- "github.com/go-playground/locales/zh"
|
|
|
- ut "github.com/go-playground/universal-translator"
|
|
|
- val "github.com/go-playground/validator/v10"
|
|
|
- zhTranslations "github.com/go-playground/validator/v10/translations/zh"
|
|
|
- "net/http"
|
|
|
- "reflect"
|
|
|
+ "github.com/0xJacky/Nginx-UI/logger"
|
|
|
+ "github.com/gin-gonic/gin"
|
|
|
+ val "github.com/go-playground/validator/v10"
|
|
|
+ "net/http"
|
|
|
+ "reflect"
|
|
|
)
|
|
|
|
|
|
func ErrHandler(c *gin.Context, err error) {
|
|
|
- logger.GetLogger().Errorln(err)
|
|
|
- c.JSON(http.StatusInternalServerError, gin.H{
|
|
|
- "message": err.Error(),
|
|
|
- })
|
|
|
+ logger.GetLogger().Errorln(err)
|
|
|
+ c.JSON(http.StatusInternalServerError, gin.H{
|
|
|
+ "message": err.Error(),
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
type ValidError struct {
|
|
|
- Key string
|
|
|
- Message string
|
|
|
+ Key string
|
|
|
+ Message string
|
|
|
}
|
|
|
|
|
|
func BindAndValid(c *gin.Context, target interface{}) bool {
|
|
|
- errs := make(map[string]string)
|
|
|
- err := c.ShouldBindJSON(target)
|
|
|
- if err != nil {
|
|
|
- logger.Error("bind err", err)
|
|
|
- uni := ut.New(zh.New())
|
|
|
- trans, _ := uni.GetTranslator("zh")
|
|
|
- v, ok := binding.Validator.Engine().(*val.Validate)
|
|
|
- if ok {
|
|
|
- _ = zhTranslations.RegisterDefaultTranslations(v, trans)
|
|
|
- }
|
|
|
-
|
|
|
- verrs, ok := err.(val.ValidationErrors)
|
|
|
-
|
|
|
- if !ok {
|
|
|
- logger.Error("valid err", verrs)
|
|
|
- c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
- "message": "Requested with wrong parameters",
|
|
|
- "code": http.StatusNotAcceptable,
|
|
|
- "error": verrs,
|
|
|
- })
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- for _, value := range verrs {
|
|
|
- t := reflect.ValueOf(target)
|
|
|
- realType := t.Type().Elem()
|
|
|
- field, _ := realType.FieldByName(value.StructField())
|
|
|
- errs[field.Tag.Get("json")] = value.Translate(trans)
|
|
|
- }
|
|
|
-
|
|
|
- c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
- "errors": errs,
|
|
|
- "message": "Requested with wrong parameters",
|
|
|
- "code": http.StatusNotAcceptable,
|
|
|
- })
|
|
|
-
|
|
|
- return false
|
|
|
- }
|
|
|
-
|
|
|
- return true
|
|
|
+ errs := make(map[string]string)
|
|
|
+ err := c.ShouldBindJSON(target)
|
|
|
+ if err != nil {
|
|
|
+ logger.Error("bind err", err)
|
|
|
+
|
|
|
+ verrs, ok := err.(val.ValidationErrors)
|
|
|
+
|
|
|
+ if !ok {
|
|
|
+ logger.Error("valid err", verrs)
|
|
|
+ c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
+ "message": "Requested with wrong parameters",
|
|
|
+ "code": http.StatusNotAcceptable,
|
|
|
+ "error": verrs,
|
|
|
+ })
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, value := range verrs {
|
|
|
+ t := reflect.ValueOf(target)
|
|
|
+ realType := t.Type().Elem()
|
|
|
+ field, _ := realType.FieldByName(value.StructField())
|
|
|
+ errs[field.Tag.Get("json")] = value.Tag()
|
|
|
+ }
|
|
|
+
|
|
|
+ c.JSON(http.StatusNotAcceptable, gin.H{
|
|
|
+ "errors": errs,
|
|
|
+ "message": "Requested with wrong parameters",
|
|
|
+ "code": http.StatusNotAcceptable,
|
|
|
+ })
|
|
|
+
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ return true
|
|
|
}
|