UNPKG

mysterium-vpn-js

Version:
82 lines (81 loc) 3.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tequilapi = exports.TequilapiClientFactory = void 0; /** * Copyright (c) 2020 BlockDev AG * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const snakecase_keys_1 = __importDefault(require("snakecase-keys")); const timeouts_1 = require("./http/timeouts"); const axios_1 = __importDefault(require("axios")); const axios_adapter_1 = require("./http/axios-adapter"); const tequilapi_client_1 = require("./tequilapi-client"); const camelcaseKeys_1 = require("./util/camelcaseKeys"); const axios_api_error_1 = require("./http/axios-api-error"); class TequilapiClientFactory { constructor(baseUrl = tequilapi_client_1.TEQUILAPI_URL, defaultTimeout = timeouts_1.TIMEOUT_DEFAULT) { this._baseUrl = baseUrl; this._defaultTimeout = defaultTimeout; } build(adapter) { if (!adapter) { adapter = this.buildAdapter(); } return new tequilapi_client_1.TequilapiClient(adapter); } static isRawPath(path) { const rawPaths = [tequilapi_client_1.pathConfig, tequilapi_client_1.pathConfigDefault, tequilapi_client_1.pathConfigUser, tequilapi_client_1.pathInvoice]; for (const rawPath of rawPaths) { if (path.includes(rawPath)) { return true; } } return false; } axiosInstance() { const ax = axios_1.default.create({ baseURL: this._baseUrl, headers: { 'Cache-Control': 'no-cache, no-store', }, }); const convertOptions = { deep: true, }; ax.interceptors.request.use((config) => { if (config.url && TequilapiClientFactory.isRawPath(config.url)) { return config; } if (config.params) { config.params = (0, snakecase_keys_1.default)(config.params, convertOptions); } if (config.data) { config.data = (0, snakecase_keys_1.default)(config.data, convertOptions); } return config; }); ax.interceptors.response.use((response) => { if (response.config.url && TequilapiClientFactory.isRawPath(response.config.url)) { return response; } if (response.data) { response.data = (0, camelcaseKeys_1.camelcaseKeys)(response.data); } return response; }, axios_api_error_1.axiosErrorHandler); return ax; } buildAdapter(axiosInstance) { if (!axiosInstance) { axiosInstance = this.axiosInstance(); } return new axios_adapter_1.AxiosAdapter(axiosInstance, this._defaultTimeout); } } exports.TequilapiClientFactory = TequilapiClientFactory; exports.tequilapi = new TequilapiClientFactory().build();