vulcain-corejs
Version:
Vulcain micro-service framework
60 lines (58 loc) • 3.15 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());
});
};
const system_1 = require('./../globals/system');
const configurationSource_1 = require('./configurationSource');
var rest = require('unirest');
var moment = require('moment');
class VulcainConfigurationSource {
constructor(uri, options) {
this.uri = uri;
this.options = options;
if (!system_1.System.vulcainToken && !system_1.System.isTestEnvironnment) {
system_1.System.log.info(null, "No token defined for reading configuration properties. Vulcain configuration source is ignored.");
}
}
pollPropertiesAsync(timeoutInMs) {
return __awaiter(this, void 0, void 0, function* () {
if (!system_1.System.vulcainToken && !system_1.System.isTestEnvironnment) {
return Promise.resolve(null);
}
let self = this;
return new Promise((resolve, reject) => {
let uri = this.uri + "?$query=" + JSON.stringify(this.options);
let values = new Map();
let request = rest.get(uri)
.headers({ 'Accept': 'application/json' })
.timeout(timeoutInMs);
if (system_1.System.vulcainToken)
request = request.headers({ Authorization: 'ApiKey ' + system_1.System.vulcainToken });
request.end(function (response) {
if (response.status === 200 && response.body) {
if (response.body.error) {
system_1.System.log.info(null, `HTTP CONFIG : error when polling properties on ${uri} - ${response.body.error.message}`);
}
else {
let data = response.body;
data.value && data.value.forEach(cfg => values.set(cfg.key, cfg));
self.options.lastUpdate = moment.utc().format();
system_1.System.log.verbose(null, `HTTP CONFIG : polling properties on ${uri}`);
}
}
else {
system_1.System.log.info(null, `HTTP CONFIG : error when polling properties on ${uri} - ${(response.error && response.error.message) || response.status}`);
}
resolve(new configurationSource_1.PollResult(self, values));
});
});
});
}
}
exports.VulcainConfigurationSource = VulcainConfigurationSource;
//# sourceMappingURL=vulcainConfigurationSource.js.map