reduce validation code and improve algorithm
This commit is contained in:
parent
cf26a112f2
commit
e17b938ef2
@ -10,60 +10,24 @@ func UuidValidate(uuid string) error {
|
|||||||
return errors.New("uuid length not valid")
|
return errors.New("uuid length not valid")
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate first 8 octets
|
for i, r := range uuid {
|
||||||
for i := 0; i < 8; i++ {
|
switch i {
|
||||||
if !(unicode.IsLetter(rune(uuid[i])) || unicode.IsDigit(rune(uuid[i]))) && uuid[i] == '-' {
|
case 8, 13, 18, 23:
|
||||||
return errors.New("uuid first 8 octets not valid")
|
if r != '-' {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate separator
|
|
||||||
if uuid[8] != '-' {
|
|
||||||
return errors.New("uuid separator not valid")
|
return errors.New("uuid separator not valid")
|
||||||
}
|
}
|
||||||
|
break
|
||||||
// validate second 4 octets
|
default:
|
||||||
for i := 9; i < 13; i++ {
|
if !isLetter(r) && !unicode.IsDigit(r) {
|
||||||
if !(unicode.IsLetter(rune(uuid[i])) || unicode.IsDigit(rune(uuid[i]))) && uuid[i] == '-' {
|
return errors.Errorf("uuid char on %i not valid", i)
|
||||||
return errors.New("uuid second 4 octets not valid")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate separator
|
|
||||||
if uuid[13] != '-' {
|
|
||||||
return errors.New("uuid separator not valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate third 4 octets
|
|
||||||
for i := 14; i < 18; i++ {
|
|
||||||
if !(unicode.IsLetter(rune(uuid[i])) || unicode.IsDigit(rune(uuid[i]))) && uuid[i] == '-' {
|
|
||||||
return errors.New("uuid third 4 octets not valid")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate separator
|
|
||||||
if uuid[18] != '-' {
|
|
||||||
return errors.New("uuid separator not valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate fourth 4 octets
|
|
||||||
for i := 19; i < 23; i++ {
|
|
||||||
if !(unicode.IsLetter(rune(uuid[i])) || unicode.IsDigit(rune(uuid[i]))) && uuid[i] == '-' {
|
|
||||||
return errors.New("uuid fourth 4 octets not valid")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate separator
|
|
||||||
if uuid[23] != '-' {
|
|
||||||
return errors.New("uuid separator not valid")
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate fourth 4 octets
|
|
||||||
for i := 24; i < 36; i++ {
|
|
||||||
if !(unicode.IsLetter(rune(uuid[i])) || unicode.IsDigit(rune(uuid[i]))) && uuid[i] == '-' {
|
|
||||||
return errors.New("uuid fifth 12 octets not valid")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func isLetter(r rune) bool {
|
||||||
|
l := unicode.ToLower(r)
|
||||||
|
return (l >= 'a' && l <= 'z')
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user