MCPcopy
hub / github.com/danielgtaylor/huma / validateFormat

Function validateFormat

validate.go:204–301  ·  view source on GitHub ↗
(path *PathBuffer, str string, s *Schema, res *ValidateResult)

Source from the content-addressed store, hash-verified

202}
203
204func validateFormat(path *PathBuffer, str string, s *Schema, res *ValidateResult) {
205 switch s.Format {
206 case "date-time":
207 found := false
208 for _, format := range []string{time.RFC3339, time.RFC3339Nano} {
209 if _, err := time.Parse(format, str); err == nil {
210 found = true
211 break
212 }
213 }
214 if !found {
215 res.Add(path, str, validation.MsgExpectedRFC3339DateTime)
216 }
217 case "date-time-http":
218 if _, err := time.Parse(time.RFC1123, str); err != nil {
219 res.Add(path, str, validation.MsgExpectedRFC1123DateTime)
220 }
221 case "date":
222 if _, err := time.Parse(time.DateOnly, str); err != nil {
223 res.Add(path, str, validation.MsgExpectedRFC3339Date)
224 }
225 case "duration":
226 if _, err := time.ParseDuration(str); err != nil {
227 res.Add(path, str, ErrorFormatter(validation.MsgExpectedDuration, err))
228 }
229 case "time":
230 found := false
231 for _, format := range []string{time.TimeOnly, "15:04:05Z07:00"} {
232 if _, err := time.Parse(format, str); err == nil {
233 found = true
234 break
235 }
236 }
237 if !found {
238 res.Add(path, str, validation.MsgExpectedRFC3339Time)
239 }
240 case "email", "idn-email":
241 if _, err := mail.ParseAddress(str); err != nil {
242 res.Add(path, str, ErrorFormatter(validation.MsgExpectedRFC5322Email, err))
243 }
244 case "idn-hostname", "hostname":
245 if len(str) >= 256 || !rxHostname.MatchString(str) {
246 res.Add(path, str, validation.MsgExpectedRFC5890Hostname)
247 }
248 case "ipv4", "ipv6", "ip":
249 addr, err := netip.ParseAddr(str)
250
251 switch s.Format {
252 case "ipv4":
253 if err != nil || !addr.Is4() {
254 res.Add(path, str, validation.MsgExpectedRFC2673IPv4)
255 }
256 case "ipv6":
257 if err != nil || !addr.Is6() || addr.Is4In6() {
258 res.Add(path, str, validation.MsgExpectedRFC2373IPv6)
259 }
260 default: // case "ip".
261 if err != nil {

Callers 1

ValidateFunction · 0.85

Calls 2

validateUUIDFunction · 0.85
AddMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…