UNPKG

@haku-sci/utils

Version:

utils from haku-sci. Library only

47 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Consul = void 0; const axios_1 = require("axios"); const utils = require("../utils"); const common_1 = require("@nestjs/common"); class Consul { static async registerService(serverAddress, logger) { if (!process.env["CONSUL_URL"]) return; const externalAddress = process.env.SERVICE_PRIVATE_HOSTNAME || process.env.SERVICE_PUBLIC_HOSTNAME || serverAddress.address; const externalPort = parseInt(process.env.SERVICE_PUBLIC_PORT) || serverAddress.port; const microServiceName = await utils.microServiceName(); const serviceData = { ID: microServiceName, Name: microServiceName, Address: externalAddress, Port: externalPort, Check: { TCP: `${externalAddress}:${externalPort}`, Interval: "10s", Timeout: "5s", DeregisterCriticalServiceAfter: "1m" } }; await axios_1.default.put(`${process.env["CONSUL_URL"]}/v1/agent/service/register`, serviceData); logger.log(`Service registered with Consul on ${externalAddress}:${externalPort}`); } static async getServiceURI(serviceName) { const response = await axios_1.default.get(`${process.env["CONSUL_URL"]}/v1/catalog/service/${serviceName}`); const serviceInfo = response.data; if (serviceInfo.length > 0) { const service = serviceInfo[0]; const address = service.ServiceAddress || service.Address; const port = service.ServicePort; return { host: address, port: port, }; } else { throw new common_1.ServiceUnavailableException(`Service ${serviceName} not found in Consul catalog`); } } } exports.Consul = Consul; //# sourceMappingURL=consul.js.map