mirror of
https://github.com/elyby/chrly.git
synced 2024-12-02 19:51:23 +05:30
49 lines
1.1 KiB
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)
|
|
}
|