Sybren A. Stüvel
f77b11d85e
Add a small wrapper around github.com/google/uuid. That way it's clearer which functionality is used by Flamenco, doesn't link most of the code to any specific UUID library, and allows a bit of customisation. The only customisation now is that Flamenco is a bit stricter in the formats it accepts; only the `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` is accepted. This makes things a little bit stricter, with the advantage that we don't need to do any normalisation of received UUID strings.
26 lines
571 B
Go
26 lines
571 B
Go
// uuid is a thin wrapper around github.com/google/uuid.
|
|
package uuid
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import (
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// New generates a random UUID.
|
|
func New() string {
|
|
return uuid.New().String()
|
|
}
|
|
|
|
// IsValid returns true when the string can be parsed as UUID.
|
|
func IsValid(value string) bool {
|
|
// uuid.Parse() accepts a few different notations for UUIDs, but Flamenco only
|
|
// works with the xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format.
|
|
if len(value) != 36 {
|
|
return false
|
|
}
|
|
|
|
_, err := uuid.Parse(value)
|
|
return err == nil
|
|
}
|