From f4a7de42b2e0060db23a686b9d3ce3b596f467fa Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Tue, 18 Mar 2014 10:45:42 +0100 Subject: [PATCH] Added method to generate URL-safe random string. --- src/app/spreed-speakfreely-server/random.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/app/spreed-speakfreely-server/random.go b/src/app/spreed-speakfreely-server/random.go index 6dda7b51..744be5bd 100644 --- a/src/app/spreed-speakfreely-server/random.go +++ b/src/app/spreed-speakfreely-server/random.go @@ -22,6 +22,7 @@ package main import ( "crypto/rand" + "encoding/base64" pseudoRand "math/rand" "time" ) @@ -48,6 +49,20 @@ func RandomString(length int) string { } +func RandomUrlString(length int) string { + + buf := make([]byte, length) + _, err := rand.Read(buf) + if err != nil { + // fallback to pseudo-random + for i := 0; i < length; i++ { + buf[i] = byte(pseudoRand.Intn(256)) + } + } + return base64.URLEncoding.EncodeToString(buf) + +} + func init() { // Make sure to seed default random generator. pseudoRand.Seed(time.Now().UTC().UnixNano())