...
1
2
3
4
5
6
7
8
9
10
11
12
13
14 package apivalidator
15
16 import (
17 "regexp"
18 "time"
19
20 "github.com/go-playground/validator/v10"
21 "github.com/robfig/cron/v3"
22 )
23
24
25 func NameValid(fl validator.FieldLevel) bool {
26 name := fl.Field().String()
27 if name == "" {
28 return false
29 }
30
31 if len(name) > 63 {
32 return false
33 }
34
35 if !checkName(name) {
36 return false
37 }
38
39 return true
40 }
41
42 var namePattern = regexp.MustCompile("^[-.\\w]*$")
43
44
45 func checkName(name string) bool {
46 return namePattern.MatchString(name)
47 }
48
49
50 func CronValid(fl validator.FieldLevel) bool {
51 cr := fl.Field().String()
52 if cr == "" {
53 return true
54 }
55
56 if _, err := cron.ParseStandard(cr); err != nil {
57 return false
58 }
59
60 return true
61 }
62
63
64 func DurationValid(fl validator.FieldLevel) bool {
65 dur := fl.Field().String()
66 if dur == "" {
67 return true
68 }
69
70 _, err := time.ParseDuration(dur)
71 return err == nil
72 }
73