UNPKG

realm-object-server

Version:

Realm Object Server

77 lines 3.31 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const URI = require("urijs"); const util_1 = require("../shared/util"); const util_2 = require("../shared/util"); class ServiceClientBase { constructor(discovery, adminToken, authorizationHeaderName, agent, tags) { this.discovery = discovery; this.adminToken = adminToken; this.authorizationHeaderName = authorizationHeaderName; this.agent = agent; this.tags = tags; } getServiceRoute(service) { const scheme = this.agent ? "https" : "http"; return new URI(`${scheme}://${service.address}:${service.port}`); } getBaseRoute() { return __awaiter(this, void 0, void 0, function* () { const service = yield this.discovery.waitForService(this.serviceName, this.tags); return this.getServiceRoute(service); }); } getRoute(...segments) { return __awaiter(this, void 0, void 0, function* () { segments.unshift(this.baseRoute); const baseRoute = yield this.getBaseRoute(); return baseRoute.segmentCoded(segments).toString(); }); } findService() { return this.discovery.find(this.serviceName, this.tags); } findAllServices() { return this.discovery.findAll(this.serviceName, this.tags); } executeRequest(request, settings = {}) { return __awaiter(this, void 0, void 0, function* () { try { const token = settings.token !== undefined ? settings.token : this.adminToken; if (token) { request = request.set({ [this.authorizationHeaderName]: token }); } if (settings.retryOn404 === undefined) { settings.retryOn404 = true; } if (settings.retryOn50x === undefined) { settings.retryOn50x = true; } const retry = util_2.retryRequest(3, 2000, (response) => { return (settings.retryOn404 && response.status === 404) || (settings.retryOn50x && response.status >= 502 && response.status <= 504); }); if (this.agent) { request = request.agent(this.agent); } const response = yield request.use(retry); return response.body; } catch (e) { throw util_1.convertHttpError(e); } }); } } exports.ServiceClientBase = ServiceClientBase; //# sourceMappingURL=ServiceClientBase.js.map