stompit
Version:
STOMP client library for node.js
54 lines (39 loc) • 1.18 kB
JavaScript
/*jslint node: true, indent: 2, unused: true, maxlen: 80, camelcase: true, esversion: 9 */
function parseServerUri(uri) {
const comps = uri.match(
/^\s*((\w+):\/\/)?(([^:]+):([^@]+)@)?([\w-.]+)(:(\d+))?\s*$/
);
if (!comps) {
throw new Error('could not parse server uri \'' + uri + '\'');
}
const scheme = comps[2];
const login = comps[4];
const passcode = comps[5];
const hostname = comps[6];
const port = comps[8];
const server = {
host: hostname,
connectHeaders: {}
};
if (scheme !== void 0) {
server.ssl = scheme === 'ssl' || scheme === 'stomp+ssl';
}
if (port !== void 0) {
server.port = parseInt(port, 10);
}
if (login !== void 0) {
server.connectHeaders.login = login;
}
if (passcode !== void 0) {
server.connectHeaders.passcode = passcode;
}
if (scheme === 'unix' || hostname[0] === '/') {
if (port !== void 0) {
throw new Error('invalid server uri \'' + uri + '\'');
}
server.path = hostname;
server.ssl = false;
}
return server;
}
module.exports = parseServerUri;