UNPKG

ms-nestjs-eureka

Version:

A NestJS module that integrate eureka-js-client

62 lines 2.95 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var DiscoveryService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.DiscoveryService = void 0; const common_1 = require("@nestjs/common"); const eureka_service_1 = require("../eureka.service"); let DiscoveryService = DiscoveryService_1 = class DiscoveryService { constructor(eurekaService) { this.eurekaService = eurekaService; this.logger = new common_1.Logger(DiscoveryService_1.name); } getUpInstance(instances, appId) { const upInstances = instances.filter((_) => _.status === 'UP'); if (upInstances.length === 0) { this.logger.error(`No UP instance found for ${appId}`); return null; } const instance = upInstances[0]; const port = this.getPortFromInstance(instance); this.logger.log(`Found UP instance for ${appId}: ${instance.hostName}:${port}`); return Object.assign(Object.assign({}, instance), { port }); } getPortFromInstance(instance) { if (instance.port && instance.port.port !== undefined) { return instance.port.port; } else if (instance.port && instance.port.$ !== undefined) { return instance.port.$; } else if (typeof instance.port === 'number') { return instance.port; } return undefined; } async getInstanceByAppId(appId) { await this.eurekaService.isReady(); const client = this.eurekaService.getClient(); const instances = client.getInstancesByAppId(appId); return this.getUpInstance(instances, appId); } async getInstancesByVipAddress(vipAddress) { await this.eurekaService.isReady(); const client = this.eurekaService.getClient(); const instances = client.getInstancesByVipAddress(vipAddress); return this.getUpInstance(instances, vipAddress); } }; exports.DiscoveryService = DiscoveryService; exports.DiscoveryService = DiscoveryService = DiscoveryService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [eureka_service_1.EurekaService]) ], DiscoveryService); //# sourceMappingURL=discovery.service.js.map