@cfwest/api-client
Version:
Unofficial CrossFire West ApiClient implementation.
81 lines (80 loc) • 2.99 kB
JavaScript
"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;