UNPKG

redis-smq-rest-api

Version:
55 lines 2.3 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseConfig = parseConfig; const url_1 = require("url"); const constants_js_1 = require("./constants.js"); const ConfigInvalidApiServerParamsError_js_1 = require("./errors/ConfigInvalidApiServerParamsError.js"); function normalizePath(path) { const s = path .split('/') .map((i) => i.trim()) .filter((i) => !!i) .join('/'); return `/${s}`; } function validateURL(apiServer) { const { hostname = constants_js_1.constants.apiServerHostname, port = constants_js_1.constants.apiServerPort, basePath = constants_js_1.constants.apiServerBasePath, } = apiServer; const address = `http://${hostname}:${port}${normalizePath(basePath)}`; try { const url = new url_1.URL(address); if (!['http'].map((x) => `${x.toLowerCase()}:`).includes(url.protocol)) { return new ConfigInvalidApiServerParamsError_js_1.ConfigInvalidApiServerParamsError(); } if (hostname !== url.hostname || port !== Number(url.port)) { return new ConfigInvalidApiServerParamsError_js_1.ConfigInvalidApiServerParamsError(); } return [url.hostname, Number(url.port), url.pathname]; } catch (_a) { return new ConfigInvalidApiServerParamsError_js_1.ConfigInvalidApiServerParamsError(); } } function parseConfig(config = {}) { const { apiServer = {} } = config, rest = __rest(config, ["apiServer"]); const reply = validateURL(apiServer); if (reply instanceof Error) throw reply; const [hostname, port, basePath] = reply; return Object.assign(Object.assign({}, rest), { apiServer: { hostname, port, basePath, } }); } //# sourceMappingURL=parseConfig.js.map