49 lines
957 B
Go
49 lines
957 B
Go
package main
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func usernameToUUID(name string) (string, uuid.UUID, error) {
|
|
var id uuid.UUID
|
|
resp, err := http.Get("https://api.mojang.com/users/profiles/minecraft/" + name)
|
|
if err != nil {
|
|
return "", id, err
|
|
}
|
|
|
|
var body struct {
|
|
Name string `json:"name"`
|
|
ID string `json:"id"`
|
|
}
|
|
err = json.NewDecoder(resp.Body).Decode(&body)
|
|
if err != nil {
|
|
return "", id, err
|
|
}
|
|
|
|
id, err = uuid.Parse(body.ID)
|
|
return body.Name, id, err
|
|
}
|
|
|
|
func intArrayToUUID(uuidInts []int32) (id uuid.UUID, err error) {
|
|
if uuidLen := len(uuidInts); uuidLen != 4 {
|
|
err = fmt.Errorf("invalid UUID len: %d * int32", uuidLen)
|
|
return
|
|
}
|
|
for i, v := range uuidInts {
|
|
binary.BigEndian.PutUint32(id[i*4:], uint32(v))
|
|
}
|
|
return
|
|
}
|
|
|
|
func uuidToIntArray(id uuid.UUID) (ints [4]int32) {
|
|
for i := range ints {
|
|
ints[i] = int32(binary.BigEndian.Uint32(id[i*4:]))
|
|
}
|
|
return
|
|
}
|