51 lines
918 B
Go
51 lines
918 B
Go
package utils
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"math/big"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
|
|
|
func RandString(length int) (string, error) {
|
|
b := make([]rune, length)
|
|
for i := range b {
|
|
idx, err := rand.Int(rand.Reader, big.NewInt(int64(len(letterRunes))))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
b[i] = letterRunes[idx.Int64()]
|
|
}
|
|
|
|
return string(b), nil
|
|
}
|
|
|
|
func IsInt(str string) bool {
|
|
_, err := strconv.ParseInt(str, 10, 64)
|
|
return err == nil
|
|
}
|
|
|
|
func Base64Decode(s string) string {
|
|
b, err := base64.StdEncoding.DecodeString(s)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
return string(b)
|
|
}
|
|
|
|
func Base64Encode(s string) string {
|
|
return base64.StdEncoding.EncodeToString([]byte(s))
|
|
}
|
|
|
|
func StringMax(str string, max int, suffix ...string) string {
|
|
if len(str) > max {
|
|
return str[:max] + strings.Join(suffix, "")
|
|
}
|
|
|
|
return str
|
|
}
|