in internal/azure/types/string_type.go [26:56]
func (s *StringType) Validate(body interface{}, path string) []error {
if body == nil {
return nil
}
v, ok := body.(string)
if !ok {
return []error{utils.ErrorMismatch(path, "string", fmt.Sprintf("%T", body))}
}
if v == "" {
// unknown values will be converted to "", skip validation for now
// TODO: improve the validation to support unknown values
return nil
}
if s.MinLength != nil && len(v) < *s.MinLength {
return []error{utils.ErrorCommon(path, fmt.Sprintf("string length is less than %d", *s.MinLength))}
}
if s.MaxLength != nil && len(v) > *s.MaxLength {
return []error{utils.ErrorCommon(path, fmt.Sprintf("string length is greater than %d", *s.MaxLength))}
}
if s.Pattern != "" {
isMatch, err := regexp.Match(s.Pattern, []byte(v))
if err != nil {
log.Printf("[WARN] failed to match pattern %s: %s", s.Pattern, err)
return nil
}
if !isMatch {
return []error{utils.ErrorCommon(path, fmt.Sprintf("string does not match pattern %s", s.Pattern))}
}
}
return nil
}