kls/links/alphabet.go

34 lines
575 B
Go

package links
import (
"crypto/rand"
"fmt"
"math/big"
"regexp"
)
const codeLength = 5
var (
alphabet = "ABCDEFGHJKMNPQRSTUVWXYZ23456789"
alphabetLength = big.NewInt(int64(len(alphabet)))
ValidShortCode = regexp.MustCompile(fmt.Sprintf(`^/[%s]{%d}$`, alphabet, codeLength))
)
func randInt() int {
p, err := rand.Int(rand.Reader, alphabetLength)
if err != nil {
panic(err.Error())
}
return int(p.Int64())
}
func GenCode() string {
var code []byte
for i := 0; i < codeLength; i++ {
code = append(code, alphabet[randInt()])
}
return string(code)
}