forked from mirror/gin
Fix for #310
This commit is contained in:
parent
e899d8a99e
commit
9584e4ea5c
|
@ -6,6 +6,7 @@ package binding
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"reflect"
|
||||||
|
|
||||||
"gopkg.in/bluesuncorp/validator.v5"
|
"gopkg.in/bluesuncorp/validator.v5"
|
||||||
)
|
)
|
||||||
|
@ -56,8 +57,20 @@ func ValidateField(f interface{}, tag string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Validate(obj interface{}) error {
|
func Validate(obj interface{}) error {
|
||||||
|
if kindOfData(obj) != reflect.Struct {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
if err := validate.Struct(obj); err != nil {
|
if err := validate.Struct(obj); err != nil {
|
||||||
return error(err)
|
return error(err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func kindOfData(data interface{}) reflect.Kind {
|
||||||
|
value := reflect.ValueOf(data)
|
||||||
|
valueType := value.Kind()
|
||||||
|
if valueType == reflect.Ptr {
|
||||||
|
valueType = value.Elem().Kind()
|
||||||
|
}
|
||||||
|
return valueType
|
||||||
|
}
|
||||||
|
|
|
@ -51,3 +51,19 @@ func TestValidateGoodObject(t *testing.T) {
|
||||||
test := createStruct()
|
test := createStruct()
|
||||||
assert.Nil(t, Validate(&test))
|
assert.Nil(t, Validate(&test))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Object map[string]interface{}
|
||||||
|
type MyObjects []Object
|
||||||
|
|
||||||
|
func TestValidateSlice(t *testing.T) {
|
||||||
|
var obj MyObjects
|
||||||
|
var obj2 Object
|
||||||
|
var nu = 10
|
||||||
|
|
||||||
|
assert.NoError(t, Validate(obj))
|
||||||
|
assert.NoError(t, Validate(&obj))
|
||||||
|
assert.NoError(t, Validate(obj2))
|
||||||
|
assert.NoError(t, Validate(&obj2))
|
||||||
|
assert.NoError(t, Validate(nu))
|
||||||
|
assert.NoError(t, Validate(&nu))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue