diff --git a/vendor/github.com/wayn3h0/go-uuid/LICENSE b/vendor/github.com/wayn3h0/go-uuid/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..fad0aa6350da088c679b81e73dee76ef873491da --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/LICENSE @@ -0,0 +1,13 @@ +Copyright 2015 Wayne Ho. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/github.com/wayn3h0/go-uuid/domain.go b/vendor/github.com/wayn3h0/go-uuid/domain.go new file mode 100644 index 0000000000000000000000000000000000000000..ce09399bcae3b33d13fd12648d20594b9952530a --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/domain.go @@ -0,0 +1,14 @@ +package uuid + +import ( + "github.com/wayn3h0/go-uuid/internal/dcesecurity" +) + +// Domain represents the identifier for a local domain +type Domain byte + +// Domains. +const ( + DomainUser = Domain(dcesecurity.User) // POSIX UID domain + DomainGroup = Domain(dcesecurity.Group) // POSIX GID domain +) diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/dcesecurity.go b/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/dcesecurity.go new file mode 100644 index 0000000000000000000000000000000000000000..9de07243d9483e479daa7cf6be52b36496d90cf7 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/dcesecurity.go @@ -0,0 +1,37 @@ +package dcesecurity + +import ( + "encoding/binary" + "errors" + "os" + + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/timebased" + "github.com/wayn3h0/go-uuid/internal/version" +) + +// Generate returns a new DCE security uuid. +func New(domain Domain) ([]byte, error) { + uuid, err := timebased.New() + if err != nil { + return nil, err + } + + switch domain { + case User: + uid := os.Getuid() + binary.BigEndian.PutUint32(uuid[0:], uint32(uid)) // network byte order + case Group: + gid := os.Getgid() + binary.BigEndian.PutUint32(uuid[0:], uint32(gid)) // network byte order + default: + return nil, errors.New("uuid: domain is invalid") + } + + // set version(v2) + version.Set(uuid, version.DCESecurity) + // set layout(RFC4122) + layout.Set(uuid, layout.RFC4122) + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/domain.go b/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/domain.go new file mode 100644 index 0000000000000000000000000000000000000000..38eae8301fdb4a49fe10e50b74ef64a666919a51 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/dcesecurity/domain.go @@ -0,0 +1,9 @@ +package dcesecurity + +// Domain represents the identifier for a local domain +type Domain byte + +const ( + User Domain = iota + 1 // POSIX UID domain + Group // POSIX GID domain +) diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/layout/layout.go b/vendor/github.com/wayn3h0/go-uuid/internal/layout/layout.go new file mode 100644 index 0000000000000000000000000000000000000000..65a84cc463e4e429bbcea37024c1cffc56859daa --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/layout/layout.go @@ -0,0 +1,12 @@ +package layout + +// Layout represents the layout of UUID. See page 5 in RFC 4122. +type Layout byte + +const ( + Invalid Layout = iota // Invalid + NCS // Reserved, NCS backward compatibility. (Values: 0x00-0x07) + RFC4122 // The variant specified in RFC 4122. (Values: 0x08-0x0b) + Microsoft // Reserved, Microsoft Corporation backward compatibility. (Values: 0x0c-0x0d) + Future // Reserved for future definition. (Values: 0x0e-0x0f) +) diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/layout/utility.go b/vendor/github.com/wayn3h0/go-uuid/internal/layout/utility.go new file mode 100644 index 0000000000000000000000000000000000000000..7c5fde7beb4acd4386126cbbe93e5cf8040e8b67 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/layout/utility.go @@ -0,0 +1,33 @@ +package layout + +// Set sets the layout for uuid. +func Set(uuid []byte, layout Layout) { + switch layout { + case NCS: + uuid[8] = (uuid[8] | 0x00) & 0x0f // Msb0=0 + case RFC4122: + uuid[8] = (uuid[8] | 0x80) & 0x8f // Msb0=1, Msb1=0 + case Microsoft: + uuid[8] = (uuid[8] | 0xc0) & 0xcf // Msb0=1, Msb1=1, Msb2=0 + case Future: + uuid[8] = (uuid[8] | 0xe0) & 0xef // Msb0=1, Msb1=1, Msb2=1 + default: + panic("uuid: layout is invalid") + } +} + +// Get returns layout of uuid. +func Get(uuid []byte) Layout { + switch { + case (uuid[8] & 0x80) == 0x00: + return NCS + case (uuid[8] & 0xc0) == 0x80: + return RFC4122 + case (uuid[8] & 0xe0) == 0xc0: + return Microsoft + case (uuid[8] & 0xe0) == 0xe0: + return Future + } + + return Invalid +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/namebased/md5/md5.go b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/md5/md5.go new file mode 100644 index 0000000000000000000000000000000000000000..a03e6c71d68cd9f10cbe6591af938122ed803e71 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/md5/md5.go @@ -0,0 +1,33 @@ +package md5 + +import ( + "crypto/md5" + + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/version" +) + +// New returns a new name-based uses SHA-1 hashing uuid. +func New(namespace, name string) ([]byte, error) { + hash := md5.New() + _, err := hash.Write([]byte(namespace)) + if err != nil { + return nil, err + } + _, err = hash.Write([]byte(name)) + if err != nil { + return nil, err + } + + sum := hash.Sum(nil) + + uuid := make([]byte, 16) + copy(uuid, sum) + + // set version(v3) + version.Set(uuid, version.NameBasedMD5) + // set layout(RFC4122) + layout.Set(uuid, layout.RFC4122) + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/namebased/namebased.go b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/namebased.go new file mode 100644 index 0000000000000000000000000000000000000000..f4202676ad56349cf0dee76ef3adae53805f2b66 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/namebased.go @@ -0,0 +1,9 @@ +package namebased + +// Standard Namespaces +const ( + NamespaceDNS = "6ba7b810-9dad-11d1-80b4-00c04fd430c8" + NamespaceURL = "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + NamespaceOID = "6ba7b812-9dad-11d1-80b4-00c04fd430c8" + NamespaceX500 = "6ba7b814-9dad-11d1-80b4-00c04fd430c8" +) diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/namebased/sha1/sha1.go b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/sha1/sha1.go new file mode 100644 index 0000000000000000000000000000000000000000..14a8eeb01c607720d0b2acfb230f3dc431e2d629 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/namebased/sha1/sha1.go @@ -0,0 +1,33 @@ +package sha1 + +import ( + "crypto/sha1" + + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/version" +) + +// New returns a new name-based uses SHA-1 hashing uuid. +func New(namespace, name string) ([]byte, error) { + hash := sha1.New() + _, err := hash.Write([]byte(namespace)) + if err != nil { + return nil, err + } + _, err = hash.Write([]byte(name)) + if err != nil { + return nil, err + } + + sum := hash.Sum(nil) + + uuid := make([]byte, 16) + copy(uuid, sum) + + // set version(v5) + version.Set(uuid, version.NameBasedSHA1) + // set layout(RFC4122) + layout.Set(uuid, layout.RFC4122) + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/random/random.go b/vendor/github.com/wayn3h0/go-uuid/internal/random/random.go new file mode 100644 index 0000000000000000000000000000000000000000..59354280800f18125241c15b9e941198ff2cc0e8 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/random/random.go @@ -0,0 +1,27 @@ +package random + +import ( + "crypto/rand" + + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/version" +) + +// New returns a new randomly uuid. +func New() ([]byte, error) { + uuid := make([]byte, 16) + n, err := rand.Read(uuid[:]) + if err != nil { + return nil, err + } + if n != len(uuid) { + return nil, err + } + + // set version(v4) + version.Set(uuid, version.Random) + // set layout(RFC4122) + layout.Set(uuid, layout.RFC4122) + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/timebased/timebased.go b/vendor/github.com/wayn3h0/go-uuid/internal/timebased/timebased.go new file mode 100644 index 0000000000000000000000000000000000000000..43541567cf1eaf24fdc4df388608f316e51da635 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/timebased/timebased.go @@ -0,0 +1,92 @@ +package timebased + +import ( + "crypto/rand" + "encoding/binary" + "net" + "sync" + "time" + + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/version" +) + +const ( + // Intervals bewteen 1/1/1970 and 15/10/1582 (Julain days of 1 Jan 1970 - Julain days of 15 Oct 1582) * 100-Nanoseconds Per Day + intervals = (2440587 - 2299160) * 86400 * 10000000 +) + +var ( + lastGenerated time.Time // last generated time + clockSequence uint16 // clock sequence for same tick + nodeID []byte // node id (MAC Address) + locker sync.Mutex // global lock +) + +// New returns a new time-based uuid. +func New() ([]byte, error) { + // Get and release a global lock + locker.Lock() + defer locker.Unlock() + + uuid := make([]byte, 16) + + // get timestamp + now := time.Now().UTC() + timestamp := uint64(now.UnixNano()/100) + intervals // get timestamp + if !now.After(lastGenerated) { + clockSequence++ // last generated time known, then just increment clock sequence + } else { + b := make([]byte, 2) + _, err := rand.Read(b) + if err != nil { + return nil, err + } + clockSequence = uint16(int(b[0])<<8 | int(b[1])) // set to a random value (network byte order) + } + + lastGenerated = now // remember the last generated time + + timeLow := uint32(timestamp & 0xffffffff) + timeMiddle := uint16((timestamp >> 32) & 0xffff) + timeHigh := uint16((timestamp >> 48) & 0xfff) + + // network byte order(BigEndian) + binary.BigEndian.PutUint32(uuid[0:], timeLow) + binary.BigEndian.PutUint16(uuid[4:], timeMiddle) + binary.BigEndian.PutUint16(uuid[6:], timeHigh) + binary.BigEndian.PutUint16(uuid[8:], clockSequence) + + // get node id(mac address) + if nodeID == nil { + interfaces, err := net.Interfaces() + if err != nil { + return nil, err + } + + for _, i := range interfaces { + if len(i.HardwareAddr) >= 6 { + nodeID = make([]byte, 6) + copy(nodeID, i.HardwareAddr) + break + } + } + + if nodeID == nil { + nodeID = make([]byte, 6) + _, err := rand.Read(nodeID) + if err != nil { + return nil, err + } + } + } + + copy(uuid[10:], nodeID) + + // set version(v1) + version.Set(uuid, version.TimeBased) + // set layout(RFC4122) + layout.Set(uuid, layout.RFC4122) + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/version/utility.go b/vendor/github.com/wayn3h0/go-uuid/internal/version/utility.go new file mode 100644 index 0000000000000000000000000000000000000000..2862711a022e9f06fa763ea6546700e7765f2aed --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/version/utility.go @@ -0,0 +1,29 @@ +package version + +// Set sets the version for uuid. +func Set(uuid []byte, version Version) { + switch version { + case TimeBased: + uuid[6] = (uuid[6] | 0x10) & 0x1f + case DCESecurity: + uuid[6] = (uuid[6] | 0x20) & 0x2f + case NameBasedMD5: + uuid[6] = (uuid[6] | 0x30) & 0x3f + case Random: + uuid[6] = (uuid[6] | 0x40) & 0x4f + case NameBasedSHA1: + uuid[6] = (uuid[6] | 0x50) & 0x5f + default: + panic("uuid: version is unknown") + } +} + +// Get gets the version of uuid. +func Get(uuid []byte) Version { + version := uuid[6] >> 4 + if version > 0 && version < 6 { + return Version(version) + } + + return Unknown +} diff --git a/vendor/github.com/wayn3h0/go-uuid/internal/version/version.go b/vendor/github.com/wayn3h0/go-uuid/internal/version/version.go new file mode 100644 index 0000000000000000000000000000000000000000..10ab52cfa15cde59be546f2c21dc49e24b79103c --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/internal/version/version.go @@ -0,0 +1,14 @@ +package version + +// Version represents the version of UUID. See page 7 in RFC 4122. +type Version byte + +// Version List +const ( + Unknown Version = iota // Unknwon + TimeBased // V1: The time-based version + DCESecurity // V2: The DCE security version, with embedded POSIX UIDs + NameBasedMD5 // V3: The name-based version that uses MD5 hashing + Random // V4: The randomly or pseudo-randomly generated version + NameBasedSHA1 // V5: The name-based version that uses SHA-1 hashing +) diff --git a/vendor/github.com/wayn3h0/go-uuid/layout.go b/vendor/github.com/wayn3h0/go-uuid/layout.go new file mode 100644 index 0000000000000000000000000000000000000000..7656df5d163e6e15a85aeaef1d7ec9605d3885f0 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/layout.go @@ -0,0 +1,33 @@ +package uuid + +import ( + "github.com/wayn3h0/go-uuid/internal/layout" +) + +// Layout represents the layout of UUID. See page 5 in RFC 4122. +type Layout byte + +// Layouts. +const ( + LayoutInvalid = Layout(layout.Invalid) // Invalid + LayoutNCS = Layout(layout.NCS) // Reserved, NCS backward compatibility. (Values: 0x00-0x07) + LayoutRFC4122 = Layout(layout.RFC4122) // The variant specified in RFC 4122. (Values: 0x08-0x0b) + LayoutMicrosoft = Layout(layout.Microsoft) // Reserved, Microsoft Corporation backward compatibility. (Values: 0x0c-0x0d) + LayoutFuture = Layout(layout.Future) // Reserved for future definition. (Values: 0x0e-0x0f) +) + +// String returns English description of layout. +func (this Layout) String() string { + switch this { + case LayoutNCS: + return "Layout: Reserved For NCS" + case LayoutRFC4122: + return "Layout: RFC 4122" + case LayoutMicrosoft: + return "Layout: Reserved For Microsoft" + case LayoutFuture: + return "Layout: Reserved For Future" + default: + return "Layout: Invalid" + } +} diff --git a/vendor/github.com/wayn3h0/go-uuid/namespace.go b/vendor/github.com/wayn3h0/go-uuid/namespace.go new file mode 100644 index 0000000000000000000000000000000000000000..23b314a56f84c63c6c9788a226d261d5b5545316 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/namespace.go @@ -0,0 +1,13 @@ +package uuid + +import ( + "github.com/wayn3h0/go-uuid/internal/namebased" +) + +// Imports namespaces. +const ( + NamespaceDNS = namebased.NamespaceDNS // "6ba7b810-9dad-11d1-80b4-00c04fd430c8" + NamespaceURL = namebased.NamespaceURL // "6ba7b811-9dad-11d1-80b4-00c04fd430c8" + NamespaceOID = namebased.NamespaceOID // "6ba7b812-9dad-11d1-80b4-00c04fd430c8" + NamespaceX500 = namebased.NamespaceX500 // "6ba7b814-9dad-11d1-80b4-00c04fd430c8" +) diff --git a/vendor/github.com/wayn3h0/go-uuid/parse.go b/vendor/github.com/wayn3h0/go-uuid/parse.go new file mode 100644 index 0000000000000000000000000000000000000000..0847299c3cede87a69dea74f44860003d34b2722 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/parse.go @@ -0,0 +1,47 @@ +package uuid + +import ( + "encoding/hex" + "errors" + "fmt" +) + +// Parse parses the UUID string. +func Parse(str string) (UUID, error) { + length := len(str) + buffer := make([]byte, 16) + charIndexes := []int{} + switch length { + case 36: + if str[8] != '-' || str[13] != '-' || str[18] != '-' || str[23] != '-' { + return Nil, fmt.Errorf("uuid: format of UUID string \"%s\" is invalid, it should be xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)", str) + } + charIndexes = []int{0, 2, 4, 6, 9, 11, 14, 16, 19, 21, 24, 26, 28, 30, 32, 34} + case 32: + charIndexes = []int{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30} + default: + return Nil, fmt.Errorf("uuid: length of UUID string \"%s\" is invalid, it should be 36 (standard) or 32 (without dash)", str) + } + for i, v := range charIndexes { + if c, e := hex.DecodeString(str[v : v+2]); e != nil { + return Nil, fmt.Errorf("uuid: UUID string \"%s\" is invalid: %s", str, e.Error()) + } else { + buffer[i] = c[0] + } + } + + uuid := UUID{} + copy(uuid[:], buffer) + + if !uuid.Equal(Nil) { + if uuid.Layout() == LayoutInvalid { + return Nil, errors.New("uuid: layout is invalid") + } + + if uuid.Version() == VersionUnknown { + return Nil, errors.New("uuid: version is unknown") + } + } + + return uuid, nil +} diff --git a/vendor/github.com/wayn3h0/go-uuid/style.go b/vendor/github.com/wayn3h0/go-uuid/style.go new file mode 100644 index 0000000000000000000000000000000000000000..17b816a75c1d1b9ce8c7142b15a7fbbc527d6597 --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/style.go @@ -0,0 +1,22 @@ +package uuid + +// Style represents the style of UUID string. +type Style byte + +// Styles. +const ( + StyleStandard Style = iota + 1 // xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12, length: 36) + StyleWithoutDash // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (length: 32) +) + +// String returns English description of style. +func (this Style) String() string { + switch this { + case StyleStandard: + return "Style: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)" + case StyleWithoutDash: + return "Style: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + default: + return "Style: Unknown" + } +} diff --git a/vendor/github.com/wayn3h0/go-uuid/uuid.go b/vendor/github.com/wayn3h0/go-uuid/uuid.go new file mode 100644 index 0000000000000000000000000000000000000000..ea17ec284621868df10e5b288a28ccb1b7a8476b --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/uuid.go @@ -0,0 +1,147 @@ +package uuid + +import ( + "bytes" + "fmt" + + "github.com/wayn3h0/go-uuid/internal/dcesecurity" + "github.com/wayn3h0/go-uuid/internal/layout" + "github.com/wayn3h0/go-uuid/internal/namebased/md5" + "github.com/wayn3h0/go-uuid/internal/namebased/sha1" + "github.com/wayn3h0/go-uuid/internal/random" + "github.com/wayn3h0/go-uuid/internal/timebased" + "github.com/wayn3h0/go-uuid/internal/version" +) + +var ( + Nil = UUID{} // Nil UUID +) + +// NewTimeBased returns a new time based UUID (version 1). +func NewTimeBased() (UUID, error) { + u, err := timebased.New() + if err != nil { + return Nil, err + } + + uuid := UUID{} + copy(uuid[:], u) + + return uuid, nil +} + +// NewV1 same as NewTimeBased. +func NewV1() (UUID, error) { + return NewTimeBased() +} + +// NewDCESecurity returns a new DCE security UUID (version 2). +func NewDCESecurity(domain Domain) (UUID, error) { + u, err := dcesecurity.New(dcesecurity.Domain(domain)) + if err != nil { + return Nil, err + } + + uuid := UUID{} + copy(uuid[:], u) + + return uuid, nil +} + +// NewV2 same as NewDCESecurity. +func NewV2(domain Domain) (UUID, error) { + return NewDCESecurity(domain) +} + +// NewNameBasedMD5 returns a new name based UUID with MD5 hash (version 3). +func NewNameBasedMD5(namespace, name string) (UUID, error) { + u, err := md5.New(namespace, name) + if err != nil { + return Nil, err + } + + uuid := UUID{} + copy(uuid[:], u) + + return uuid, nil +} + +// NewV3 same as NewNameBasedMD5. +func NewV3(namespace, name string) (UUID, error) { + return NewNameBasedMD5(namespace, name) +} + +// NewRandom returns a new random UUID (version 4). +func NewRandom() (UUID, error) { + u, err := random.New() + if err != nil { + return Nil, err + } + + uuid := UUID{} + copy(uuid[:], u) + + return uuid, nil +} + +// NewV4 same as NewRandom. +func NewV4() (UUID, error) { + return NewRandom() +} + +// New same as NewRandom. +func New() (UUID, error) { + return NewRandom() +} + +// NewNameBasedSHA1 returns a new name based UUID with SHA1 hash (version 5). +func NewNameBasedSHA1(namespace, name string) (UUID, error) { + u, err := sha1.New(namespace, name) + if err != nil { + return Nil, err + } + + uuid := UUID{} + copy(uuid[:], u) + + return uuid, nil +} + +// NewV5 same as NewNameBasedSHA1. +func NewV5(namespace, name string) (UUID, error) { + return NewNameBasedSHA1(namespace, name) +} + +// UUID respresents an UUID type compliant with specification in RFC 4122. +type UUID [16]byte + +// Layout returns layout of UUID. +func (this UUID) Layout() Layout { + return Layout(layout.Get(this[:])) +} + +// Version returns version of UUID. +func (this UUID) Version() Version { + return Version(version.Get(this[:])) +} + +// Equal returns true if current uuid equal to passed uuid. +func (this UUID) Equal(another UUID) bool { + return bytes.EqualFold(this[:], another[:]) +} + +// Format returns the formatted string of UUID. +func (this UUID) Format(style Style) string { + switch style { + case StyleWithoutDash: + return fmt.Sprintf("%x", this[:]) + //case StyleStandard: + default: + return fmt.Sprintf("%08x-%04x-%04x-%04x-%012x", this[:4], this[4:6], this[6:8], this[8:10], this[10:]) + } +} + +// String returns the string of UUID with standard style(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 8-4-4-4-12). +func (this UUID) String() string { + return this.Format(StyleStandard) +} diff --git a/vendor/github.com/wayn3h0/go-uuid/version.go b/vendor/github.com/wayn3h0/go-uuid/version.go new file mode 100644 index 0000000000000000000000000000000000000000..af509e3a3bb170dc45576c415d38f3c6f0444ffe --- /dev/null +++ b/vendor/github.com/wayn3h0/go-uuid/version.go @@ -0,0 +1,45 @@ +package uuid + +import ( + "github.com/wayn3h0/go-uuid/internal/version" +) + +// Version represents the version of UUID. See page 7 in RFC 4122. +type Version byte + +// Versions. +const ( + VersionUnknown = Version(version.Unknown) // Unknown + VersionTimeBased = Version(version.TimeBased) // V1: The time-based version + VersionDCESecurity = Version(version.DCESecurity) // V2: The DCE security version, with embedded POSIX UIDs + VersionNameBasedMD5 = Version(version.NameBasedMD5) // V3: The name-based version that uses MD5 hashing + VersionRandom = Version(version.Random) // V4: The randomly or pseudo-randomly generated version + VersionNameBasedSHA1 = Version(version.NameBasedSHA1) // V5: The name-based version that uses SHA-1 hashing +) + +// Short names. +const ( + V1 = VersionTimeBased + V2 = VersionDCESecurity + V3 = VersionNameBasedMD5 + V4 = VersionRandom + V5 = VersionNameBasedSHA1 +) + +// String returns English description of version. +func (this Version) String() string { + switch this { + case VersionTimeBased: + return "Version 1: Time-Based" + case VersionDCESecurity: + return "Version 2: DCE Security With Embedded POSIX UIDs" + case VersionNameBasedMD5: + return "Version 3: Name-Based (MD5)" + case VersionRandom: + return "Version 4: Randomly OR Pseudo-Randomly Generated" + case VersionNameBasedSHA1: + return "Version 5: Name-Based (SHA-1)" + default: + return "Version: Unknown" + } +}