v0.5.0: batch-first API, player/leaderboard handles, unified naming, Storage is global project storage, catalog list methods
CI / build (push) Successful in 49s

This commit is contained in:
edmand46
2026-08-26 18:30:28 +03:00
parent db1223c195
commit ef5bbe2df2
60 changed files with 1066 additions and 258 deletions
+51 -43
View File
@@ -2,11 +2,9 @@ package rudder
import (
"context"
"encoding/json"
"net/http"
"net/url"
"strconv"
"time"
"hub.rudder.build/rudder/rudder-go-sdk/models"
)
@@ -48,59 +46,69 @@ func (s *PlayersService) Get(ctx context.Context, playerID string) (*models.Admi
return &response, nil
}
type UpdatePlayerParameters struct {
Nickname *string
Data json.RawMessage
}
func (s *PlayersService) Update(ctx context.Context, playerID string, parameters UpdatePlayerParameters) (*models.AdminPlayer, error) {
body := models.UpdatePlayerRequest{
Data: parameters.Data,
}
if parameters.Nickname != nil {
body.Nickname = *parameters.Nickname
}
var response models.AdminPlayer
if err := s.transport.do(ctx, http.MethodPatch, "/players/"+url.PathEscape(playerID), nil, body, &response); err != nil {
return nil, err
}
return &response, nil
}
type BanPlayerParameters struct {
Reason string
Until *time.Time
type UpdatePlayersParameters struct {
IdempotencyKey string
Items []models.BatchUpdatePlayersItem
}
func (s *PlayersService) Ban(ctx context.Context, playerID string, parameters BanPlayerParameters) (*models.AdminPlayer, error) {
body := models.BanPlayerRequest{
Reason: parameters.Reason,
func (s *PlayersService) Update(ctx context.Context, parameters UpdatePlayersParameters) ([]models.AdminPlayer, error) {
body := models.BatchUpdatePlayersRequest{
IdempotencyKey: parameters.IdempotencyKey,
}
if parameters.Until != nil {
body.BannedUntil = parameters.Until.Format(time.RFC3339)
Items: parameters.Items,
}
var response models.AdminPlayer
if err := s.transport.do(ctx, http.MethodPost, "/players/"+url.PathEscape(playerID)+"/ban", nil, body, &response); err != nil {
var response models.BatchPlayersResponse
if err := s.transport.do(ctx, http.MethodPatch, "/players", nil, body, &response); err != nil {
return nil, err
}
return &response, nil
return response.Players, nil
}
func (s *PlayersService) Unban(ctx context.Context, playerID string) (*models.AdminPlayer, error) {
var response models.AdminPlayer
if err := s.transport.do(ctx, http.MethodPost, "/players/"+url.PathEscape(playerID)+"/unban", nil, nil, &response); err != nil {
type BanPlayersParameters struct {
IdempotencyKey string
Items []models.BatchBanPlayersItem
}
func (s *PlayersService) Ban(ctx context.Context, parameters BanPlayersParameters) ([]models.AdminPlayer, error) {
body := models.BatchBanPlayersRequest{
IdempotencyKey: parameters.IdempotencyKey,
Items: parameters.Items,
}
var response models.BatchPlayersResponse
if err := s.transport.do(ctx, http.MethodPost, "/players/ban", nil, body, &response); err != nil {
return nil, err
}
return &response, nil
return response.Players, nil
}
func (s *PlayersService) Delete(ctx context.Context, playerID string, idempotencyKey string) error {
body := models.DeletePlayerRequest{
IdempotencyKey: idempotencyKey,
}
return s.transport.do(ctx, http.MethodDelete, "/players/"+url.PathEscape(playerID), nil, body, nil)
type UnbanPlayersParameters struct {
IdempotencyKey string
Items []models.BatchPlayerItem
}
func (s *PlayersService) Unban(ctx context.Context, parameters UnbanPlayersParameters) ([]models.AdminPlayer, error) {
body := models.BatchUnbanPlayersRequest{
IdempotencyKey: parameters.IdempotencyKey,
Items: parameters.Items,
}
var response models.BatchPlayersResponse
if err := s.transport.do(ctx, http.MethodPost, "/players/unban", nil, body, &response); err != nil {
return nil, err
}
return response.Players, nil
}
type DeletePlayersParameters struct {
IdempotencyKey string
Items []models.BatchPlayerItem
}
func (s *PlayersService) Delete(ctx context.Context, parameters DeletePlayersParameters) error {
body := models.BatchDeletePlayersRequest{
IdempotencyKey: parameters.IdempotencyKey,
Items: parameters.Items,
}
return s.transport.do(ctx, http.MethodDelete, "/players", nil, body, nil)
}