64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
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)
|
|
}
|