@cfwest/api-client
Version:
Unofficial CrossFire West ApiClient implementation.
45 lines (44 loc) • 1.94 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiClient = void 0;
const api_modules_1 = require("./internal/api-modules");
const http_1 = require("./internal/http");
const mapping_1 = require("./internal/mapping");
const lodash_merge_1 = __importDefault(require("lodash.merge"));
/** @hidden */
const defaultOptions = {
httpClient: new http_1.AxiosHttpClient()
};
/** @hidden */
const defaultApiModuleOptions = {
weaponCategoryMapper: new mapping_1.WeaponCategoryMapperImpl()
};
/**
* This class is the core component to communicate with [CrossFire West](https://crossfire.z8games.com/) Services.
*/
class ApiClient {
/**
* Constructor to initiale an [[ApiClient]] instance.
* @param options Optional options to configure the [[ApiClient]]
*/
constructor(options) {
const initOptions = this.mergeConstructorOptions(options);
const moduleInitOptions = this.createApiModuleOptions(initOptions);
this.achievements = new api_modules_1.AchievementsApiModule(moduleInitOptions);
this.ranking = new api_modules_1.RankingApiModule(moduleInitOptions);
this.ribbons = new api_modules_1.RibbonsApiModule(moduleInitOptions);
this.updates = new api_modules_1.UpdatesApiModule(moduleInitOptions);
this.userWeapons = new api_modules_1.UserWeaponsApiModule(moduleInitOptions);
this.webshop = new api_modules_1.WebShopApiModule(moduleInitOptions);
}
mergeConstructorOptions(options) {
return lodash_merge_1.default({}, defaultOptions, options);
}
createApiModuleOptions(apiClientOptions) {
return lodash_merge_1.default({}, defaultApiModuleOptions, apiClientOptions);
}
}
exports.ApiClient = ApiClient;