mysterium-vpn-js
Version:
Javascript SDK for Mysterium node
82 lines (81 loc) • 3.12 kB
JavaScript
;
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();