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