pk.Option improvement
This commit is contained in:
@ -1,10 +1,16 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"encoding/pem"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
pk "github.com/Tnze/go-mc/net/packet"
|
||||
)
|
||||
|
||||
var ServicesURL = "https://api.minecraftservices.com"
|
||||
@ -21,6 +27,22 @@ type KeyPairResp struct {
|
||||
RefreshedAfter time.Time `json:"refreshedAfter"`
|
||||
}
|
||||
|
||||
func (k KeyPairResp) WriteTo(w io.Writer) (int64, error) {
|
||||
block, _ := pem.Decode([]byte(k.KeyPair.PublicKey))
|
||||
if block == nil {
|
||||
return 0, errors.New("pem decode error: no data is found")
|
||||
}
|
||||
signature, err := base64.StdEncoding.DecodeString(k.PublicKeySignature)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return pk.Tuple{
|
||||
pk.Long(k.ExpiresAt.UnixMilli()),
|
||||
pk.ByteArray(block.Bytes),
|
||||
pk.ByteArray(signature),
|
||||
}.WriteTo(w)
|
||||
}
|
||||
|
||||
func GetOrFetchKeyPair(accessToken string) (KeyPairResp, error) {
|
||||
return fetchKeyPair(accessToken) // TODO: cache
|
||||
}
|
||||
|
Reference in New Issue
Block a user