Files
rudder-go-sdk/storage.go
T

47 lines
1.4 KiB
Go
Raw Normal View History

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