@creditkarma/consul-client
Version:
A client for Hashicorp Consul written in TypeScript
81 lines • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ConsulClient = void 0;
const got_1 = require("got");
const got_2 = require("got");
const utils_1 = require("../utils");
const BaseClient_1 = require("../BaseClient");
const logger = require("../logger");
class ConsulClient extends BaseClient_1.BaseClient {
async processRequest(req, options = {}) {
try {
switch (req.type) {
case "RegisterEntityRequest":
return await (0, got_2.default)(`${this.getPathForRequest(req)}/register`, (0, utils_1.deepMerge)(options, {
body: Buffer.from(JSON.stringify(req.payload)),
method: 'PUT',
headers: (0, utils_1.headersForRequest)(req),
searchParams: (0, utils_1.cleanQueryParams)({
dc: req.dc,
index: req.index,
}),
responseType: 'json',
}));
case "ListNodesRequest":
return await (0, got_2.default)(`${this.getPathForRequest(req)}/nodes`, (0, utils_1.deepMerge)(options, {
method: 'GET',
headers: (0, utils_1.headersForRequest)(req),
searchParams: (0, utils_1.cleanQueryParams)({
dc: req.dc,
index: req.index,
}),
responseType: 'json',
}));
case "ListServicesRequest":
return await (0, got_2.default)(`${this.getPathForRequest(req)}/services`, (0, utils_1.deepMerge)(options, {
method: 'GET',
headers: (0, utils_1.headersForRequest)(req),
searchParams: (0, utils_1.cleanQueryParams)({
dc: req.dc,
index: req.index,
}),
responseType: 'json',
}));
case "ListServiceNodesRequest":
const newOptions = (0, utils_1.deepMerge)(options, {
method: 'GET',
headers: (0, utils_1.headersForRequest)(req),
searchParams: (0, utils_1.cleanQueryParams)({
dc: req.dc,
index: req.index,
passing: true,
wait: '55s',
stale: '',
}),
responseType: 'json',
});
return await (0, got_2.default)(`${this.getHealthPathForRequest(req)}/service/${req.serviceName}`, newOptions);
default:
const msg = req;
return Promise.reject(new Error(`Unsupported request type: ${msg}`));
}
}
catch (err) {
if (err instanceof got_1.HTTPError) {
return err.response;
}
else {
logger.error(`Unexpected error on ${req.type}: ${err instanceof Error ? err.message : err}`);
throw err;
}
}
}
getHealthPathForRequest(req) {
return `${this.currentDestination}/${req.apiVersion}/health`;
}
getPathForRequest(req) {
return `${this.currentDestination}/${req.apiVersion}/${req.section}`;
}
}
exports.ConsulClient = ConsulClient;
//# sourceMappingURL=ConsulClient.js.map