v0.5.0: batch-first API, player/leaderboard handles, unified naming, Storage is global project storage, catalog list methods
CI / build (push) Successful in 49s
CI / build (push) Successful in 49s
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package rudder
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
|
||||
"hub.rudder.build/rudder/rudder-go-sdk/models"
|
||||
)
|
||||
|
||||
type PlayerStorageHandle struct {
|
||||
playerID string
|
||||
transport *transport
|
||||
}
|
||||
|
||||
func (h *PlayerStorageHandle) Get(ctx context.Context, storageType string) (*models.PlayerStorage, error) {
|
||||
var response models.PlayerStorage
|
||||
if err := h.transport.do(ctx, http.MethodGet, "/players/"+url.PathEscape(h.playerID)+"/storage/"+url.PathEscape(storageType), nil, nil, &response); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &response, nil
|
||||
}
|
||||
|
||||
type UpsertPlayerStorageParameters struct {
|
||||
IdempotencyKey string
|
||||
Type string
|
||||
Data string
|
||||
ExpiresAt string
|
||||
}
|
||||
|
||||
func (h *PlayerStorageHandle) Upsert(ctx context.Context, parameters UpsertPlayerStorageParameters) (*models.PlayerStorage, error) {
|
||||
body := models.BatchUpsertPlayerStoragesRequest{
|
||||
IdempotencyKey: parameters.IdempotencyKey,
|
||||
Items: []models.BatchUpsertPlayerStoragesItem{{
|
||||
PlayerID: h.playerID,
|
||||
Type: parameters.Type,
|
||||
Data: parameters.Data,
|
||||
ExpiresAt: parameters.ExpiresAt,
|
||||
}},
|
||||
}
|
||||
|
||||
var response models.BatchUpsertPlayerStoragesResponse
|
||||
if err := h.transport.do(ctx, http.MethodPut, "/players/storage", nil, body, &response); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &response.Storages[0], nil
|
||||
}
|
||||
|
||||
type DeletePlayerStorageParameters struct {
|
||||
IdempotencyKey string
|
||||
Type string
|
||||
}
|
||||
|
||||
func (h *PlayerStorageHandle) Delete(ctx context.Context, parameters DeletePlayerStorageParameters) error {
|
||||
body := models.BatchDeletePlayerStoragesRequest{
|
||||
IdempotencyKey: parameters.IdempotencyKey,
|
||||
Items: []models.BatchDeletePlayerStoragesItem{{
|
||||
PlayerID: h.playerID,
|
||||
Type: parameters.Type,
|
||||
}},
|
||||
}
|
||||
return h.transport.do(ctx, http.MethodDelete, "/players/storage", nil, body, nil)
|
||||
}
|
||||
Reference in New Issue
Block a user