@myria/leaderboard-ts-sdk
Version:
Myria Leaderboard typescripts SDK which will manage leaderboard for game developers
233 lines • 16.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LeaderboardAPI = void 0;
const axios_1 = require("../axios");
const BaseAPI_1 = require("../../clients/BaseAPI");
class LeaderboardAPI {
constructor(env) {
this.axiosInstance = (0, BaseAPI_1.createAxios)(env);
this.axiosWrapper = new axios_1.AxiosWrapper(this.axiosInstance);
}
async createLeaderboard(leaderboardParams, developerApiKey) {
const result = (await this.axiosWrapper.makeRequest({
url: `/leaderboards`,
method: 'POST',
headers: {
'x-api-developer-key': developerApiKey,
},
data: leaderboardParams,
}));
return result;
}
async getLeaderboards(queryParams, developerApiKey) {
const result = (await this.axiosWrapper.makeRequest({
url: `/leaderboards`,
method: 'GET',
headers: {
'x-api-developer-key': developerApiKey,
},
params: queryParams,
}));
return result;
}
async deleteLeaderboardById(leaderboardId, developerApiKey) {
try {
const response = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${leaderboardId}`,
method: 'DELETE',
headers: {
'x-api-developer-key': developerApiKey,
},
});
console.log('Response from API:', response);
return true;
}
catch (error) {
console.error('Failed to delete leaderboard:', error);
return false;
}
}
async getScoresByLeaderboardId(queryScoreParams, developerApiKey) {
const filterParam = {};
if (queryScoreParams.filters) {
Object.keys(queryScoreParams.filters).map((key) => {
var _a, _b;
filterParam[`filters[${key}]`] =
(_b = (_a = queryScoreParams.filters) === null || _a === void 0 ? void 0 : _a[key]) !== null && _b !== void 0 ? _b : 1;
});
}
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${queryScoreParams.leaderboardId}/scores`,
method: 'GET',
headers: {
'x-api-developer-key': developerApiKey,
},
params: {
limit: queryScoreParams.limit,
sortingField: queryScoreParams.sortingField,
orderBy: queryScoreParams.orderBy,
page: queryScoreParams.page,
period: queryScoreParams.period,
...filterParam,
},
});
return result;
}
async getScoresByLeaderboardIdAndUserId(queryScoreByUserIdParams, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${queryScoreByUserIdParams.leaderboardId}/scores/by-user-id/${queryScoreByUserIdParams.userId}`,
method: 'GET',
headers: {
'x-api-developer-key': developerApiKey,
},
params: {
period: queryScoreByUserIdParams.period,
},
});
return result;
}
async postNewScore(postScoreParam, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${postScoreParam.leaderboardId}/scores`,
method: 'POST',
headers: {
'x-api-developer-key': developerApiKey,
},
data: {
items: postScoreParam.items,
},
});
return result;
}
async updateRewardDistributionConfig(updateRewardsConfig, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${updateRewardsConfig.leaderboardId}/rewards`,
method: 'PUT',
headers: {
'x-api-developer-key': developerApiKey,
},
data: updateRewardsConfig.rewardConfig,
});
return result;
}
async getLeaderboardDetailsInfo(getLeaderboardDetailsParams, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${getLeaderboardDetailsParams.leaderboardIdOrName}`,
method: 'GET',
headers: {
'x-api-developer-key': developerApiKey,
},
});
return result;
}
async updateGameMetadata(params, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${params.leaderboardId}/metadata`,
method: 'PUT',
headers: {
'x-api-developer-key': developerApiKey,
},
data: {
gameMetadata: params.gameMetadata,
},
});
return result;
}
async updateConfigMetadata(params, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${params.leaderboardId}/metadata`,
method: 'PUT',
headers: {
'x-api-developer-key': developerApiKey,
},
data: {
configMetadata: params.configMetadata,
},
});
return result;
}
async updateGlobalMetadata(params, developerApiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/leaderboards/${params.leaderboardId}/metadata`,
method: 'PUT',
headers: {
'x-api-developer-key': developerApiKey,
},
data: {
configMetadata: params.configMetadata,
gameMetadata: params.gameMetadata,
},
});
return result;
}
async getRewardData(params) {
const result = await this.axiosWrapper.makeRequest({
url: `/rewards/by-user/${params.userId}`,
method: 'GET',
params: {
leaderboardId: params.leaderboardId,
status: params.rewardStatus,
limit: params.limit || 100,
page: params.page || 1,
},
});
return result;
}
async preClaim(params) {
const result = await this.axiosWrapper.makeRequest({
url: `/rewards/pre-claim/by-user/${params.userId}`,
method: 'PATCH',
data: {
leaderboardId: params.leaderboardId,
rewardIds: params.rewardIds,
},
headers: {
'stark-key': params.xStarkKey,
'x-timestamp': params.xTimestamp,
'x-signature': params.xSignature,
},
});
return result;
}
async postClaimReward(params) {
const result = await this.axiosWrapper.makeRequest({
url: `/rewards/post-claim/by-user/${params.userId}`,
method: 'PATCH',
data: params.errorMessage
? {
leaderboardId: params.leaderboardId,
rewardIds: params.rewardIds,
transactionHash: params.transactionHash,
errorMessage: params.errorMessage,
}
: {
leaderboardId: params.leaderboardId,
rewardIds: params.rewardIds,
transactionHash: params.transactionHash,
},
headers: {
'Stark-key': params.xStarkKey,
'x-timestamp': params.xTimestamp,
'x-signature': params.xSignature,
},
});
return result;
}
async updateUserInfo(params, apiKey) {
const result = await this.axiosWrapper.makeRequest({
url: `/users/${params.userId}`,
method: 'PATCH',
headers: {
'x-api-developer-key': apiKey,
},
data: {
username: params.username,
displayName: params.displayName,
avatarUrl: params.avatarUrl,
},
});
return result;
}
}
exports.LeaderboardAPI = LeaderboardAPI;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVhZGVyYm9hcmRBUEkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9hcGlzL0xlYWRlcmJvYXJkQVBJLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG9DQUF3QztBQUV4QyxtREFBb0Q7QUErQnBELE1BQWEsY0FBYztJQUl6QixZQUFZLEdBQWE7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLHFCQUFXLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLG9CQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENBQzVCLGlCQUEwQyxFQUMxQyxlQUF1QjtRQUV2QixNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbEQsR0FBRyxFQUFFLGVBQWU7WUFDcEIsTUFBTSxFQUFFLE1BQU07WUFDZCxPQUFPLEVBQUU7Z0JBQ1AscUJBQXFCLEVBQUUsZUFBZTthQUN2QztZQUNELElBQUksRUFBRSxpQkFBaUI7U0FDeEIsQ0FBQyxDQUFxQyxDQUFDO1FBRXhDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUMxQixXQUFxQyxFQUNyQyxlQUF1QjtRQUV2QixNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbEQsR0FBRyxFQUFFLGVBQWU7WUFDcEIsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUU7Z0JBQ1AscUJBQXFCLEVBQUUsZUFBZTthQUN2QztZQUNELE1BQU0sRUFBRSxXQUFXO1NBQ3BCLENBQUMsQ0FBZ0UsQ0FBQztRQUVuRSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUNoQyxh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