UNPKG

@creditkarma/consul-client

Version:

A client for Hashicorp Consul written in TypeScript

81 lines 3.64 kB
"use strict"; 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