realm-object-server
Version:
77 lines • 3.31 kB
JavaScript
;
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