1
2
3
4 package redis
5
6 import (
7 "bytes"
8 "errors"
9 "fmt"
10 "net"
11 "net/mail"
12 "net/url"
13 "regexp"
14 "sort"
15 "strings"
16 "time"
17 "unicode/utf8"
18
19 "google.golang.org/protobuf/types/known/anypb"
20 )
21
22
23 var (
24 _ = bytes.MinRead
25 _ = errors.New("")
26 _ = fmt.Print
27 _ = utf8.UTFMax
28 _ = (*regexp.Regexp)(nil)
29 _ = (*strings.Reader)(nil)
30 _ = net.IPv4len
31 _ = time.Duration(0)
32 _ = (*url.URL)(nil)
33 _ = (*mail.Address)(nil)
34 _ = anypb.Any{}
35 _ = sort.Sort
36 )
37
38
39
40
41 func (m *RedisClusterConfig) Validate() error {
42 return m.validate(false)
43 }
44
45
46
47
48
49 func (m *RedisClusterConfig) ValidateAll() error {
50 return m.validate(true)
51 }
52
53 func (m *RedisClusterConfig) validate(all bool) error {
54 if m == nil {
55 return nil
56 }
57
58 var errors []error
59
60 if d := m.GetClusterRefreshRate(); d != nil {
61 dur, err := d.AsDuration(), d.CheckValid()
62 if err != nil {
63 err = RedisClusterConfigValidationError{
64 field: "ClusterRefreshRate",
65 reason: "value is not a valid duration",
66 cause: err,
67 }
68 if !all {
69 return err
70 }
71 errors = append(errors, err)
72 } else {
73
74 gt := time.Duration(0*time.Second + 0*time.Nanosecond)
75
76 if dur <= gt {
77 err := RedisClusterConfigValidationError{
78 field: "ClusterRefreshRate",
79 reason: "value must be greater than 0s",
80 }
81 if !all {
82 return err
83 }
84 errors = append(errors, err)
85 }
86
87 }
88 }
89
90 if d := m.GetClusterRefreshTimeout(); d != nil {
91 dur, err := d.AsDuration(), d.CheckValid()
92 if err != nil {
93 err = RedisClusterConfigValidationError{
94 field: "ClusterRefreshTimeout",
95 reason: "value is not a valid duration",
96 cause: err,
97 }
98 if !all {
99 return err
100 }
101 errors = append(errors, err)
102 } else {
103
104 gt := time.Duration(0*time.Second + 0*time.Nanosecond)
105
106 if dur <= gt {
107 err := RedisClusterConfigValidationError{
108 field: "ClusterRefreshTimeout",
109 reason: "value must be greater than 0s",
110 }
111 if !all {
112 return err
113 }
114 errors = append(errors, err)
115 }
116
117 }
118 }
119
120 if all {
121 switch v := interface{}(m.GetRedirectRefreshInterval()).(type) {
122 case interface{ ValidateAll() error }:
123 if err := v.ValidateAll(); err != nil {
124 errors = append(errors, RedisClusterConfigValidationError{
125 field: "RedirectRefreshInterval",
126 reason: "embedded message failed validation",
127 cause: err,
128 })
129 }
130 case interface{ Validate() error }:
131 if err := v.Validate(); err != nil {
132 errors = append(errors, RedisClusterConfigValidationError{
133 field: "RedirectRefreshInterval",
134 reason: "embedded message failed validation",
135 cause: err,
136 })
137 }
138 }
139 } else if v, ok := interface{}(m.GetRedirectRefreshInterval()).(interface{ Validate() error }); ok {
140 if err := v.Validate(); err != nil {
141 return RedisClusterConfigValidationError{
142 field: "RedirectRefreshInterval",
143 reason: "embedded message failed validation",
144 cause: err,
145 }
146 }
147 }
148
149 if all {
150 switch v := interface{}(m.GetRedirectRefreshThreshold()).(type) {
151 case interface{ ValidateAll() error }:
152 if err := v.ValidateAll(); err != nil {
153 errors = append(errors, RedisClusterConfigValidationError{
154 field: "RedirectRefreshThreshold",
155 reason: "embedded message failed validation",
156 cause: err,
157 })
158 }
159 case interface{ Validate() error }:
160 if err := v.Validate(); err != nil {
161 errors = append(errors, RedisClusterConfigValidationError{
162 field: "RedirectRefreshThreshold",
163 reason: "embedded message failed validation",
164 cause: err,
165 })
166 }
167 }
168 } else if v, ok := interface{}(m.GetRedirectRefreshThreshold()).(interface{ Validate() error }); ok {
169 if err := v.Validate(); err != nil {
170 return RedisClusterConfigValidationError{
171 field: "RedirectRefreshThreshold",
172 reason: "embedded message failed validation",
173 cause: err,
174 }
175 }
176 }
177
178
179
180
181
182 if len(errors) > 0 {
183 return RedisClusterConfigMultiError(errors)
184 }
185
186 return nil
187 }
188
189
190
191
192 type RedisClusterConfigMultiError []error
193
194
195 func (m RedisClusterConfigMultiError) Error() string {
196 var msgs []string
197 for _, err := range m {
198 msgs = append(msgs, err.Error())
199 }
200 return strings.Join(msgs, "; ")
201 }
202
203
204 func (m RedisClusterConfigMultiError) AllErrors() []error { return m }
205
206
207
208 type RedisClusterConfigValidationError struct {
209 field string
210 reason string
211 cause error
212 key bool
213 }
214
215
216 func (e RedisClusterConfigValidationError) Field() string { return e.field }
217
218
219 func (e RedisClusterConfigValidationError) Reason() string { return e.reason }
220
221
222 func (e RedisClusterConfigValidationError) Cause() error { return e.cause }
223
224
225 func (e RedisClusterConfigValidationError) Key() bool { return e.key }
226
227
228 func (e RedisClusterConfigValidationError) ErrorName() string {
229 return "RedisClusterConfigValidationError"
230 }
231
232
233 func (e RedisClusterConfigValidationError) Error() string {
234 cause := ""
235 if e.cause != nil {
236 cause = fmt.Sprintf(" | caused by: %v", e.cause)
237 }
238
239 key := ""
240 if e.key {
241 key = "key for "
242 }
243
244 return fmt.Sprintf(
245 "invalid %sRedisClusterConfig.%s: %s%s",
246 key,
247 e.field,
248 e.reason,
249 cause)
250 }
251
252 var _ error = RedisClusterConfigValidationError{}
253
254 var _ interface {
255 Field() string
256 Reason() string
257 Key() bool
258 Cause() error
259 ErrorName() string
260 } = RedisClusterConfigValidationError{}
261
View as plain text