UNPKG

@cfwest/api-client

Version:

Unofficial CrossFire West ApiClient implementation.

45 lines (44 loc) 1.94 kB
"use strict"; 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;