UNPKG

@duongtrungnguyen/nestro

Version:
68 lines 2.38 kB
var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __decorateClass = (decorators, target, key, kind) => { var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target; for (var i = decorators.length - 1, decorator; i >= 0; i--) if (decorator = decorators[i]) result = (kind ? decorator(target, key, result) : decorator(result)) || result; if (kind && result) __defProp(target, key, result); return result; }; var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index); import { Injectable, Inject } from "@nestjs/common"; import { getServerURL, normalizeJson } from "../../common"; import { INSTANCE_INFO, SERVER_INFO } from "../constants"; import { KeyService } from "../../security"; let SecureClientService = class { constructor(instanceInfo, serverInfo, keyService) { this.instanceInfo = instanceInfo; this.keyService = keyService; this.serverBaseUrl = getServerURL(serverInfo); } async onModuleInit() { await this.register(); } async beforeApplicationShutdown() { clearInterval(this.intervalId); await this.deregister(); } getSignedHeaders() { return { "Content-Type": "application/json", signature: this.keyService.signData(this.instanceInfo) }; } async register() { const response = await fetch(`${this.serverBaseUrl}/nestro/register`, { method: "POST", body: normalizeJson(this.instanceInfo), headers: this.getSignedHeaders() }); const data = await response.json(); this.intervalId = setInterval(() => this.sendHeartbeat(), data.heartbeatInterval); } async sendHeartbeat() { await fetch(`${this.serverBaseUrl}/nestro/heartbeat`, { method: "POST", body: normalizeJson(this.instanceInfo), headers: this.getSignedHeaders() }); } async deregister() { await fetch(`${this.serverBaseUrl}/nestro/deregister`, { method: "DELETE", body: normalizeJson(this.instanceInfo), headers: this.getSignedHeaders() }); } }; SecureClientService = __decorateClass([ Injectable(), __decorateParam(0, Inject(INSTANCE_INFO)), __decorateParam(1, Inject(SERVER_INFO)), __decorateParam(2, Inject(KeyService)) ], SecureClientService); export { SecureClientService }; //# sourceMappingURL=secure-client.service.js.map