rxrest
Version:
RxRest a reactive REST utility
41 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const superagent = require("superagent");
const rxjs_1 = require("rxjs");
const operators_1 = require("rxjs/operators");
function fetch(input, init, abortCallback) {
if (!(input instanceof Request)) {
input = new Request(input, init);
}
let req = superagent[input.method.toLowerCase()](input.url);
for (let header of input.headers) {
req.set(header[0], header[1]);
}
return rxjs_1.from(input.text())
.pipe(operators_1.mergeMap(body => {
req.send(body);
return rxjs_1.Observable.create((observer) => {
req.end(function (err, res) {
if (err) {
return observer.error(res);
}
if (res.noContent === true) {
observer.next(new Response());
return observer.complete();
}
res.url = input.url;
let response = new Response(res.text, res);
observer.next(response);
observer.complete();
});
return function abort() {
req.abort();
if (abortCallback) {
abortCallback(req);
}
};
});
}));
}
exports.fetch = fetch;
//# sourceMappingURL=fetch.js.map