-
Notifications
You must be signed in to change notification settings - Fork 1
/
validator.go
88 lines (81 loc) · 1.43 KB
/
validator.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
package traits
import "github.com/asaskevich/govalidator"
type validator interface {
Validate() (bool, error)
setValidator(i interface{})
}
// Validator adds the Validate function to an embedding struct,
// which can be used to validate structure fields by tags.
//
// List of available validators for struct fields:
// "email"
// "url"
// "dialstring"
// "requrl"
// "requri"
// "alpha"
// "utfletter"
// "alphanum"
// "utfletternum"
// "numeric"
// "utfnumeric"
// "utfdigit"
// "hexadecimal"
// "hexcolor"
// "rgbcolor"
// "lowercase"
// "uppercase"
// "int"
// "float"
// "null"
// "uuid"
// "uuidv3"
// "uuidv4"
// "uuidv5"
// "creditcard"
// "isbn10"
// "isbn13"
// "json"
// "multibyte"
// "ascii"
// "printableascii"
// "fullwidth"
// "halfwidth"
// "variablewidth"
// "base64"
// "datauri"
// "ip"
// "port"
// "ipv4"
// "ipv6"
// "dns"
// "host"
// "mac"
// "latitude"
// "longitude"
// "ssn"
// "semver"
// "rfc3339"
// "rfc3339WithoutZone"
// "ISO3166Alpha2"
// "ISO3166Alpha3"
//
// Example:
//
// type Example struct {
// Str string `valid:"numeric"`
// Email string `valid:"email"`
// }
//
type Validator struct {
self interface{}
}
var _ validator = (*Validator)(nil)
func (v *Validator) setValidator(i interface{}) {
v.self = i
}
// Validate uses tags to validate struct fields.
// The result will be equal to `false` if there are any errors.
func (v *Validator) Validate() (bool, error) {
return govalidator.ValidateStruct(v.self)
}