Files
rudder-go-sdk/player_storage.go
T

64 lines
1.7 KiB
Go
Raw Permalink Normal View History

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) (*PlayerStorage, error) {
var response 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) (*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)
}