UNPKG

@cfwest/api-client

Version:

Unofficial CrossFire West ApiClient implementation.

81 lines (80 loc) 2.99 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RankingApiModule = void 0; const base_module_1 = require("./base-module"); const lodash_merge_1 = __importDefault(require("lodash.merge")); class DefaulutRankingOptions { constructor() { this.searchName = ''; this.start = 1; this.end = 100; this.periodType = "all" /* AllTime */; this.rank = "user" /* User */; } } class RankingApiModule extends base_module_1.BaseApiModule { mergeRequestParams(options) { return lodash_merge_1.default({}, new DefaulutRankingOptions(), options); } async playerRankingRequest(requestOptions) { const options = this.mergeRequestParams(requestOptions); if (!options || !options.start || !options.end || !options.periodType || !options.rank) { return undefined; } const response = await this.httpClient.get('ranking.json', { params: { startrow: options.start, endrow: options.end, period: options.periodType.toString(), rankType: options.rank.toString(), name: options.searchName, }, }); if (response && response.Ranking && response.Ranking.RankList) { return response.Ranking.RankList; } return undefined; } async clanRankingRequest(requestOptions) { const options = this.mergeRequestParams(requestOptions); if (!options || !options.start || !options.end || !options.periodType || !options.rank) { return undefined; } const response = await this.httpClient.get('ranking.json', { params: { startrow: options.start, endrow: options.end, period: options.periodType.toString(), rankType: options.rank.toString(), name: options.searchName, }, }); if (response && response.Ranking.RankList) { return response.Ranking.RankList; } return undefined; } searchPlayer(name, period = "all" /* AllTime */) { return this.playerRankingRequest({ searchName: name, periodType: period, }); } searchClan(name, period = "all" /* AllTime */) { return this.clanRankingRequest({ searchName: name, periodType: period, rank: "clan" /* Clan */, }); } getPlayerRanking(options = {}) { return this.playerRankingRequest(options); } getClanRanking(options = { rank: "clan" /* Clan */ }) { return this.clanRankingRequest(options); } } exports.RankingApiModule = RankingApiModule;