diff --git a/id/random.go b/id/random.go index 0c804df..222833d 100644 --- a/id/random.go +++ b/id/random.go @@ -1,26 +1,38 @@ package id import ( - "fmt" "crypto/rand" + "fmt" ) // GenerateRandomString creates a random string of characters of the given // length from the given dictionary of possible characters. // // This example generates a hexadecimal string 6 characters long: // GenerateRandomString("0123456789abcdef", 6) func GenerateRandomString(dictionary string, l int) string { var bytes = make([]byte, l) rand.Read(bytes) for k, v := range bytes { bytes[k] = dictionary[v%byte(len(dictionary))] } return string(bytes) } // GenSafeUniqueSlug generatees a reasonably unique random slug from the given // original slug. It's "safe" because it uses 0-9 b-z excluding vowels. func GenSafeUniqueSlug(slug string) string { return fmt.Sprintf("%s-%s", slug, GenerateRandomString("0123456789bcdfghjklmnpqrstvwxyz", 4)) } + +// Generate62RandomString creates a random string with the given length +// consisting of characters in [A-Za-z0-9]. +func Generate62RandomString(l int) string { + return GenerateRandomString("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", l) +} + +// GenerateFriendlyRandomString creates a random string of characters with the +// given length consisting of characters in [a-z0-9]. +func GenerateFriendlyRandomString(l int) string { + return GenerateRandomString("0123456789abcdefghijklmnopqrstuvwxyz", l) +}