You can not select more than 25 topics
Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- // Copyright 2017 Manu Martinez-Almeida. All rights reserved.
- // Use of this source code is governed by a MIT style
- // license that can be found in the LICENSE file.
-
- package binding
-
- import (
- "reflect"
- "sync"
-
- "gopkg.in/go-playground/validator.v9"
- )
-
- type defaultValidator struct {
- once sync.Once
- validate *validator.Validate
- }
-
- var _ StructValidator = &defaultValidator{}
-
- // ValidateStruct receives any kind of type, but only performed struct or pointer to struct type.
- func (v *defaultValidator) ValidateStruct(obj interface{}) error {
- value := reflect.ValueOf(obj)
- valueType := value.Kind()
- if valueType == reflect.Ptr {
- valueType = value.Elem().Kind()
- }
- if valueType == reflect.Struct {
- v.lazyinit()
- if err := v.validate.Struct(obj); err != nil {
- return err
- }
- }
- return nil
- }
-
- // Engine returns the underlying validator engine which powers the default
- // Validator instance. This is useful if you want to register custom validations
- // or struct level validations. See validator GoDoc for more info -
- // https://godoc.org/gopkg.in/go-playground/validator.v8
- func (v *defaultValidator) Engine() interface{} {
- v.lazyinit()
- return v.validate
- }
-
- func (v *defaultValidator) lazyinit() {
- v.once.Do(func() {
- v.validate = validator.New()
- v.validate.SetTagName("binding")
- })
- }
|