From 3980fb1fb38a201be59b04a6a4ab51777d5ea5cf Mon Sep 17 00:00:00 2001 From: Todd Gruben Date: Tue, 17 Dec 2013 14:25:16 -0600 Subject: [PATCH] added checking to SSUID --- util/id.go | 14 +++++++++++++- util/util_test.go | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/util/id.go b/util/id.go index e6db0eff4..7d001c09c 100644 --- a/util/id.go +++ b/util/id.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "encoding/hex" "math/rand" + "strings" "time" ) @@ -18,6 +19,9 @@ func init() { type SUUID uint64 +func leftPad(s string, padStr string, pLen int) string { + return strings.Repeat(padStr, pLen) + s +} func Id() SUUID { millis := uint64(time.Now().UTC().UnixNano()) id := millis << (64 - 41) @@ -33,7 +37,15 @@ func SUUID_to_Hex(a SUUID) string { return hex.EncodeToString(buf.Bytes()) } func Hex_to_SUUID(str string) SUUID { - b, _ := hex.DecodeString(str) + l := len(str) + var m string + if l < 16 { + m = leftPad(str, "0", 16-l) + } else { + m = str + } + + b, _ := hex.DecodeString(m) num := binary.BigEndian.Uint64(b) return SUUID(num) } diff --git a/util/util_test.go b/util/util_test.go index 982dd2c17..23a794ed3 100644 --- a/util/util_test.go +++ b/util/util_test.go @@ -25,6 +25,13 @@ func init() { } */ func TestId(t *testing.T) { + Convey("Test Small", t, func() { + s := "1" + //s := "0000000000000001" + //s := "000000000000001" + b2 := Hex_to_SUUID(s) + So(1, ShouldEqual, b2) + }) Convey("Basic Usage", t, func() { bc1 := Id() println(SUUID_to_Hex(bc1))