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) }