package utils

import (
	"math/rand"
	"time"
)

const DigitCharset = "0123456789"
const DigitHexCharset = DigitCharset + "abcdef"
const DigitHexUpperCaseCharset = DigitCharset + "ABCDEF"
const LowerCaseCharset = "abcdefghijklmnopqrstuvwxyz"
const UpperCaseCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const WordCharset = LowerCaseCharset + UpperCaseCharset
const IdCharset = LowerCaseCharset + UpperCaseCharset + DigitCharset + "_-"

var seededRand *rand.Rand = rand.New(rand.NewSource(time.Now().UnixNano()))

func GenerateRandomString(length int, charset string) string {
	buf := make([]byte, length)
	max := len(charset)
	for i := range buf {
		buf[i] = charset[seededRand.Intn(max)]
	}
	return string(buf)
}
