featurehub-repository
Version:
Core package of API that exposes FeatureHub feature flags, values and configuration to client applications written in Typescript or Javascript.
68 lines • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FeatureUpdater = void 0;
const models_1 = require("./models/models");
class BrowserFeaturePostUpdater {
post(url, update) {
return new Promise((resolve) => {
const req = new XMLHttpRequest();
req.open('PUT', url);
req.setRequestHeader('Content-type', 'application/json');
req.send(JSON.stringify(models_1.ObjectSerializer.serialize(update, 'FeatureStateUpdate')));
req.onreadystatechange = function () {
if (req.readyState === 4) {
resolve(req.status >= 200 && req.status < 300);
}
};
});
}
}
class NodejsFeaturePostUpdater {
post(url, update) {
const loc = new URL(url);
const cra = { protocol: loc.protocol, path: loc.pathname,
host: loc.hostname, method: 'PUT', port: loc.port, timeout: 3000,
headers: {
'content-type': 'application/json'
}
};
const http = cra.protocol === 'http:' ? require('http') : require('https');
return new Promise((resolve, reject) => {
try {
const req = http.request(cra, (res) => {
if (res.statusCode >= 200 && res.statusCode < 300) {
resolve(true);
}
else {
resolve(false);
}
});
req.on('error', (e) => {
resolve(false);
});
const data = models_1.ObjectSerializer.serialize(update, 'FeatureStateUpdate');
req.write(JSON.stringify(data));
req.end();
}
catch (e) {
resolve(false);
}
});
}
}
class FeatureUpdater {
constructor(config) {
this.sdkUrl = config.url();
if (typeof window === 'object') {
this.manager = new BrowserFeaturePostUpdater();
}
else {
this.manager = new NodejsFeaturePostUpdater();
}
}
updateKey(key, update) {
return this.manager.post(this.sdkUrl + '/' + key, update);
}
}
exports.FeatureUpdater = FeatureUpdater;
//# sourceMappingURL=test_sdk.js.map