62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
// Package validation provides format validation functions.
|
|
package validation
|
|
|
|
import (
|
|
"net/url"
|
|
"regexp"
|
|
)
|
|
|
|
var (
|
|
isUUIDRegexp = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$")
|
|
isRegionRegex = regexp.MustCompile("^[a-z]{2}-[a-z]{3}$")
|
|
isZoneRegex = regexp.MustCompile("^[a-z]{2}-[a-z]{3}-[1-9]$")
|
|
isAccessKey = regexp.MustCompile("^SCW[A-Z0-9]{17}$")
|
|
isEmailRegexp = regexp.MustCompile("^.+@.+$")
|
|
)
|
|
|
|
// IsUUID returns true if the given string has a valid UUID format.
|
|
func IsUUID(s string) bool {
|
|
return isUUIDRegexp.MatchString(s)
|
|
}
|
|
|
|
// IsAccessKey returns true if the given string has a valid Scaleway access key format.
|
|
func IsAccessKey(s string) bool {
|
|
return isAccessKey.MatchString(s)
|
|
}
|
|
|
|
// IsSecretKey returns true if the given string has a valid Scaleway secret key format.
|
|
func IsSecretKey(s string) bool {
|
|
return IsUUID(s)
|
|
}
|
|
|
|
// IsOrganizationID returns true if the given string has a valid Scaleway organization ID format.
|
|
func IsOrganizationID(s string) bool {
|
|
return IsUUID(s)
|
|
}
|
|
|
|
// IsProjectID returns true if the given string has a valid Scaleway project ID format.
|
|
func IsProjectID(s string) bool {
|
|
return IsUUID(s)
|
|
}
|
|
|
|
// IsRegion returns true if the given string has a valid region format.
|
|
func IsRegion(s string) bool {
|
|
return isRegionRegex.MatchString(s)
|
|
}
|
|
|
|
// IsZone returns true if the given string has a valid zone format.
|
|
func IsZone(s string) bool {
|
|
return isZoneRegex.MatchString(s)
|
|
}
|
|
|
|
// IsURL returns true if the given string has a valid URL format.
|
|
func IsURL(s string) bool {
|
|
_, err := url.Parse(s)
|
|
return err == nil
|
|
}
|
|
|
|
// IsEmail returns true if the given string has an email format.
|
|
func IsEmail(v string) bool {
|
|
return isEmailRegexp.MatchString(v)
|
|
}
|