steadybit
Version:
Command-line interface to interact with the Steadybit API
41 lines • 1.67 kB
JavaScript
;
// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: 2022 Steadybit GmbH
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeApiCall = executeApiCall;
const eventsource_1 = __importDefault(require("eventsource"));
const rxjs_1 = require("rxjs");
const errors_1 = require("../errors");
const common_1 = require("./common");
function executeApiCall({ path, queryParameters }) {
return (0, rxjs_1.from)((0, common_1.getHeaders)())
.pipe((0, rxjs_1.combineLatestWith)((0, rxjs_1.from)((0, common_1.toUrl)(path, queryParameters))))
.pipe((0, rxjs_1.switchMap)(([headers, url]) => executeApiCallInternal(url, headers)));
}
function executeApiCallInternal(url, headers) {
return new rxjs_1.Observable(subscriber => {
const es = new eventsource_1.default(url, {
headers,
});
es.onmessage = (event) => {
if (event.type !== 'heart-beat') {
const data = JSON.parse(event.data);
subscriber.next(data);
}
};
es.onerror = (event) => {
const status = event.status;
if (status != null) {
subscriber.error(new Error(`Failed to establish SSE connection to ${url}. Got status code ${status}`));
}
else {
(0, errors_1.abortExecution)('Connection to SSE endpoint %s failed: %s', url, event);
}
};
return () => es.close();
});
}
//# sourceMappingURL=sse.js.map