From 4b5922c92f7aaa5198beaf9b0d7036d40921d052 Mon Sep 17 00:00:00 2001 From: edmand46 Date: Tue, 25 Aug 2026 16:25:29 +0300 Subject: [PATCH] quests: admin player-quest client (list/reset/force-complete/force-claim), generated models --- client.go | 2 ++ models/adminplayerquest.go | 10 +++++++ models/adminplayerquestobjective.go | 9 +++++++ models/adminplayerquestrequest.go | 7 +++++ models/listplayerquestsresponse.go | 7 +++++ quests.go | 42 +++++++++++++++++++++++++++++ 6 files changed, 77 insertions(+) create mode 100644 models/adminplayerquest.go create mode 100644 models/adminplayerquestobjective.go create mode 100644 models/adminplayerquestrequest.go create mode 100644 models/listplayerquestsresponse.go create mode 100644 quests.go diff --git a/client.go b/client.go index 87f5cd5..d0318aa 100644 --- a/client.go +++ b/client.go @@ -21,6 +21,7 @@ type Client struct { Wallet *WalletService Inventory *InventoryService Storage *StorageService + Quests *QuestsService ProjectStorage *ProjectStorageService } @@ -53,6 +54,7 @@ func New(config Config) (*Client, error) { Wallet: &WalletService{transport: transport}, Inventory: &InventoryService{transport: transport}, Storage: &StorageService{transport: transport}, + Quests: &QuestsService{transport: transport}, ProjectStorage: &ProjectStorageService{transport: transport}, }, nil diff --git a/models/adminplayerquest.go b/models/adminplayerquest.go new file mode 100644 index 0000000..289ad71 --- /dev/null +++ b/models/adminplayerquest.go @@ -0,0 +1,10 @@ +// Code generated by apigen. DO NOT EDIT. + +package models + +type AdminPlayerQuest struct { + Name string `json:"name,omitempty"` + Objectives []AdminPlayerQuestObjective `json:"objectives,omitempty"` + QuestID string `json:"questId,omitempty"` + Status string `json:"status,omitempty"` +} diff --git a/models/adminplayerquestobjective.go b/models/adminplayerquestobjective.go new file mode 100644 index 0000000..bd6bb1e --- /dev/null +++ b/models/adminplayerquestobjective.go @@ -0,0 +1,9 @@ +// Code generated by apigen. DO NOT EDIT. + +package models + +type AdminPlayerQuestObjective struct { + Current int64 `json:"current,omitempty"` + ObjectiveID string `json:"objectiveId,omitempty"` + Target int64 `json:"target,omitempty"` +} diff --git a/models/adminplayerquestrequest.go b/models/adminplayerquestrequest.go new file mode 100644 index 0000000..d1dbbd7 --- /dev/null +++ b/models/adminplayerquestrequest.go @@ -0,0 +1,7 @@ +// Code generated by apigen. DO NOT EDIT. + +package models + +type AdminPlayerQuestRequest struct { + QuestID string `json:"questId,omitempty"` +} diff --git a/models/listplayerquestsresponse.go b/models/listplayerquestsresponse.go new file mode 100644 index 0000000..07a3e52 --- /dev/null +++ b/models/listplayerquestsresponse.go @@ -0,0 +1,7 @@ +// Code generated by apigen. DO NOT EDIT. + +package models + +type ListPlayerQuestsResponse struct { + Quests []AdminPlayerQuest `json:"quests,omitempty"` +} diff --git a/quests.go b/quests.go new file mode 100644 index 0000000..22da3fe --- /dev/null +++ b/quests.go @@ -0,0 +1,42 @@ +package rudder + +import ( + "context" + "net/http" + "net/url" + + "hub.rudder.build/rudder/rudder-go-sdk/models" +) + +type QuestsService struct { + transport *transport +} + +func (s *QuestsService) ListPlayerQuests(ctx context.Context, playerID string) ([]models.AdminPlayerQuest, error) { + var response models.ListPlayerQuestsResponse + if err := s.transport.do(ctx, http.MethodGet, "/players/"+url.PathEscape(playerID)+"/quests", nil, nil, &response); err != nil { + return nil, err + } + return response.Quests, nil +} + +func (s *QuestsService) ResetPlayerQuest(ctx context.Context, playerID string, questID string) error { + body := models.AdminPlayerQuestRequest{ + QuestID: questID, + } + return s.transport.do(ctx, http.MethodPost, "/players/"+url.PathEscape(playerID)+"/quests/reset", nil, body, nil) +} + +func (s *QuestsService) ForceCompletePlayerQuest(ctx context.Context, playerID string, questID string) error { + body := models.AdminPlayerQuestRequest{ + QuestID: questID, + } + return s.transport.do(ctx, http.MethodPost, "/players/"+url.PathEscape(playerID)+"/quests/force-complete", nil, body, nil) +} + +func (s *QuestsService) ForceClaimPlayerQuest(ctx context.Context, playerID string, questID string) error { + body := models.AdminPlayerQuestRequest{ + QuestID: questID, + } + return s.transport.do(ctx, http.MethodPost, "/players/"+url.PathEscape(playerID)+"/quests/force-claim", nil, body, nil) +}