-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinit.go
89 lines (74 loc) · 2.5 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package requestCore
import (
"log"
"reflect"
"regexp"
"strings"
"github.com/go-playground/locales/fa"
ut "github.com/go-playground/universal-translator"
"github.com/go-playground/validator/v10"
fa_translations "github.com/go-playground/validator/v10/translations/fa"
"github.com/hmmftg/requestCore/libError"
"github.com/hmmftg/requestCore/libRequest"
"github.com/hmmftg/requestCore/response"
"github.com/hmmftg/requestCore/webFramework"
)
var Validate *validator.Validate
const RegexPaddedIp string = `^((25[0-5]|2[0-4]\d|1\d\d|0\d\d)\.?\b){4}$` //^((25[0-5]|2[0-4]\d|1\d\d|0\d\d)\.?\b){4}$
func PaddedIpValidator(fl validator.FieldLevel) bool {
st := fl.Field().String()
if len(st) != 15 {
return false
}
re := regexp.MustCompile(RegexPaddedIp)
return re.MatchString(st)
}
func addTranslation(tag string, errMessage string, trans ut.Translator) {
registerFn := func(ut ut.Translator) error {
return ut.Add(tag, errMessage, false)
}
transFn := func(ut ut.Translator, fe validator.FieldError) string {
param := fe.Param()
tag := fe.Tag()
t, err := ut.T(tag, fe.Field(), param)
if err != nil {
return fe.(error).Error()
}
return t
}
err := Validate.RegisterTranslation(tag, trans, registerFn, transFn)
if err != nil {
log.Fatalln("error in RegisterTranslation:", err)
}
}
func Init() (ut.Translator, *validator.Validate, error) {
uni := ut.New(fa.New())
trans, _ := uni.GetTranslator("fa")
Validate = validator.New() //(config)
err := Validate.RegisterValidation("padded_ip", PaddedIpValidator)
if err != nil {
return nil, nil, err
}
Validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
name := strings.SplitN(fld.Tag.Get("json"), ",", 2)[0]
if name == "-" {
return ""
}
return name
})
//Validate.RegisterStructValidation(CustomerStructLevelValidation, GetCustomerInfoRequest{})
err = fa_translations.RegisterDefaultTranslations(Validate, trans)
if err != nil {
return nil, nil, libError.Join(err, "error calling fa_translations.RegisterDefaultTranslations")
}
addTranslation("padded_ip", "{0} بایستی به فرمت 000.000.000.000 باشد", trans)
return trans, Validate, nil
}
func InitReqLog(w webFramework.WebFramework, reqLog libRequest.RequestPtr, core RequestCoreInterface, method, path string) response.ErrorState {
w.Parser.SetLocal("reqLog", reqLog)
status, result, err := core.RequestTools().Initialize(w, method, path, reqLog)
if err != nil {
return response.Error(status, result["desc"], result["message"], err)
}
return nil
}