ae74fb22d3
Players.Update/Ban/Unban/Delete + List search; new InventoryService.Adjust and StorageService.Get/Upsert/Delete; IdempotencyKey on wallet adjust; models regenerated via apigen
47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package rudder
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/url"
|
|
"time"
|
|
|
|
"hub.rudder.build/rudder/rudder-go-sdk/models"
|
|
)
|
|
|
|
type StorageService struct {
|
|
transport *transport
|
|
}
|
|
|
|
func (s *StorageService) Get(ctx context.Context, playerID string, storageType string) (*models.PlayerStorage, error) {
|
|
var response models.PlayerStorage
|
|
if err := s.transport.do(ctx, http.MethodGet, "/players/"+url.PathEscape(playerID)+"/storage/"+url.PathEscape(storageType), nil, nil, &response); err != nil {
|
|
return nil, err
|
|
}
|
|
return &response, nil
|
|
}
|
|
|
|
type UpsertStorageParameters struct {
|
|
Data string
|
|
ExpiresAt *time.Time
|
|
}
|
|
|
|
func (s *StorageService) Upsert(ctx context.Context, playerID string, storageType string, parameters UpsertStorageParameters) (*models.PlayerStorage, error) {
|
|
body := models.UpsertPlayerStorageRequest{
|
|
Data: parameters.Data,
|
|
}
|
|
if parameters.ExpiresAt != nil {
|
|
body.ExpiresAt = parameters.ExpiresAt.Format(time.RFC3339)
|
|
}
|
|
|
|
var response models.PlayerStorage
|
|
if err := s.transport.do(ctx, http.MethodPut, "/players/"+url.PathEscape(playerID)+"/storage/"+url.PathEscape(storageType), nil, body, &response); err != nil {
|
|
return nil, err
|
|
}
|
|
return &response, nil
|
|
}
|
|
|
|
func (s *StorageService) Delete(ctx context.Context, playerID string, storageType string) error {
|
|
return s.transport.do(ctx, http.MethodDelete, "/players/"+url.PathEscape(playerID)+"/storage/"+url.PathEscape(storageType), nil, nil, nil)
|
|
}
|