I would like to be able to define custom validators that can be used in the spec in the same way as strfmt.UUID
and strfmt.ObjectId
"github.com/go-openapi/strfmt"
For example, I could write in the swagger spec something like this
login: type: string format: login password: type: string format: password
And after generating the code, I would like to call my own login and password validators.
func ValidateLogin(s string) error {
var err error
if len(s) == 0 {
err = multierr.Append(err,...
}
if len(s) < 8 {
err = multierr.Append(err,...
}
for n, r := range s {
if !unicode.IsLetter(r) && !unicode.IsNumber(r) || r >= unicode.MaxASCII {
err = multierr.Append(err,...
}
}
return err
}
func ValidatePassword(pass string) error {
var err error
if len(pass) == 0 {
...
}
if len(pass) < 8 {
...
}
var (
upp, low, num, sym bool
)
for n, char := range pass {
switch {
case unicode.IsUpper(char):
upp = true
case unicode.IsLower(char):
low = true
case unicode.IsNumber(char):
num = true
case unicode.IsPunct(char) || unicode.IsSymbol(char):
sym = true
default:
err = multierr.Append(err, ...
}
}
if !upp {
err = multierr.Append(err, ...
}
if !low {
err = multierr.Append(err, ...
}
if !num {
err = multierr.Append(err, ...
}
if !sym {
err = multierr.Append(err,...
}
return err
}
I suppose it's easy to do, but I didn't find a direct recipe in the go-swagger documentation. Maybe I missed something.