Files
rudder-go-sdk/player_quests.go
T
2026-08-27 16:10:27 +03:00

50 lines
1.5 KiB
Go

package rudder
import (
"context"
"net/http"
"net/url"
"hub.rudder.build/rudder/rudder-go-sdk/models"
)
type PlayerQuestsHandle struct {
playerID string
transport *transport
quests *QuestsService
}
func (h *PlayerQuestsHandle) List(ctx context.Context) ([]PlayerQuest, error) {
var response models.ListPlayerQuestsResponse
if err := h.transport.do(ctx, http.MethodGet, "/players/"+url.PathEscape(h.playerID)+"/quests", nil, nil, &response); err != nil {
return nil, err
}
return response.Quests, nil
}
type PlayerQuestParameters struct {
IdempotencyKey string
QuestID string
}
func (h *PlayerQuestsHandle) Reset(ctx context.Context, parameters PlayerQuestParameters) error {
return h.quests.Reset(ctx, PlayerQuestsParameters{
IdempotencyKey: parameters.IdempotencyKey,
Items: []PlayerQuestRef{{PlayerID: h.playerID, QuestID: parameters.QuestID}},
})
}
func (h *PlayerQuestsHandle) ForceComplete(ctx context.Context, parameters PlayerQuestParameters) error {
return h.quests.ForceComplete(ctx, PlayerQuestsParameters{
IdempotencyKey: parameters.IdempotencyKey,
Items: []PlayerQuestRef{{PlayerID: h.playerID, QuestID: parameters.QuestID}},
})
}
func (h *PlayerQuestsHandle) ForceClaim(ctx context.Context, parameters PlayerQuestParameters) error {
return h.quests.ForceClaim(ctx, PlayerQuestsParameters{
IdempotencyKey: parameters.IdempotencyKey,
Items: []PlayerQuestRef{{PlayerID: h.playerID, QuestID: parameters.QuestID}},
})
}