| 1234567891011121314151617181920212223242526272829303132333435363738 |
- package binding
- import (
- "reflect"
- "sync"
- "gopkg.in/bluesuncorp/validator.v5"
- )
- type defaultValidator struct {
- once sync.Once
- validate *validator.Validate
- }
- var _ StructValidator = &defaultValidator{}
- func (v *defaultValidator) ValidateStruct(obj interface{}) error {
- if kindOfData(obj) == reflect.Struct {
- v.lazyinit()
- return v.validate.Struct(obj)
- }
- return nil
- }
- func (v *defaultValidator) lazyinit() {
- v.once.Do(func() {
- v.validate = validator.New("binding", validator.BakedInValidators)
- })
- }
- func kindOfData(data interface{}) reflect.Kind {
- value := reflect.ValueOf(data)
- valueType := value.Kind()
- if valueType == reflect.Ptr {
- valueType = value.Elem().Kind()
- }
- return valueType
- }
|