chrly/lib/tools/tools.go

49 lines
1.1 KiB
Go

package tools
import (
"strings"
"time"
"crypto/md5"
"strconv"
"encoding/hex"
"elyby/minecraft-skinsystem/lib/structures"
"elyby/minecraft-skinsystem/lib/services"
"encoding/json"
"log"
)
func ParseUsername(username string) string {
const suffix = ".png"
if strings.HasSuffix(username, suffix) {
username = strings.TrimSuffix(username, suffix)
}
return username
}
func BuildNonElyTexturesHash(username string) string {
n := time.Now()
hour := time.Date(n.Year(), n.Month(), n.Day(), n.Hour(), 0, 0, 0, time.UTC).Unix()
hasher := md5.New()
hasher.Write([]byte("non-ely-" + strconv.FormatInt(hour, 10) + "-" + username))
return hex.EncodeToString(hasher.Sum(nil))
}
func FindRecord(username string) (structures.SkinItem, error) {
var record structures.SkinItem;
result, err := services.Redis.Cmd("GET", BuildKey(username)).Str();
if (err == nil) {
decodeErr := json.Unmarshal([]byte(result), &record)
if (decodeErr != nil) {
log.Println("Cannot decode record data")
}
}
return record, err
}
func BuildKey(username string) string {
return "username:" + strings.ToLower(username)
}