redis-smq-rest-api
Version:
A RESTful API for RedisSMQ
55 lines • 2.3 kB
JavaScript
;
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