52 lines
952 B
Go
52 lines
952 B
Go
package util
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"strings"
|
|
"time"
|
|
|
|
gonanoid "github.com/matoous/go-nanoid"
|
|
)
|
|
|
|
const alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
|
|
|
func init() {
|
|
rand.Seed(time.Now().UnixNano())
|
|
}
|
|
|
|
func RandomString(n int) string {
|
|
var sb strings.Builder
|
|
k := len(alphabet)
|
|
|
|
for i := 0; i < n; i++ {
|
|
c := alphabet[rand.Intn(k)]
|
|
sb.WriteByte(c)
|
|
}
|
|
|
|
return sb.String()
|
|
}
|
|
|
|
func RandomInt(n int) string {
|
|
var letters = []byte("0123456789")
|
|
result := make([]byte, n)
|
|
for i := range result {
|
|
result[i] = letters[rand.Intn(len(letters))]
|
|
}
|
|
return string(result)
|
|
}
|
|
|
|
func RandomLevel() string {
|
|
levels := []string{"DEBUG", "INFO", "ERROR", "WARNING", "FAIL"}
|
|
n := len(levels)
|
|
return levels[rand.Intn(n)]
|
|
}
|
|
|
|
func GenerateFilename() (string, error) {
|
|
filename, err := gonanoid.Nanoid()
|
|
if err != nil {
|
|
return "", fmt.Errorf("could not generate avatar filename: %v", err)
|
|
}
|
|
return filename, nil
|
|
}
|