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
CI / build (push) Successful in 49s
This commit is contained in:
+51
-43
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user