wikipathways-api-client
Version:
JS client for the WikiPathways.org webservices API
54 lines • 4.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var Observable_1 = require("rxjs/Observable");
require("rxjs/add/operator/map");
require("rxjs/add/operator/mergeMap");
require("rxjs/add/observable/fromEventPattern");
require("rxjs/add/operator/concat");
require("rxjs/add/operator/filter");
require("rxjs/add/operator/takeUntil");
var sax = require("sax");
function updatePathway(ajaxResponse) {
var xhr = ajaxResponse.xhr;
var strict = true;
var saxStream = sax.createStream(strict, { xmlns: true, encoding: 'utf8' });
function createSaxStreamEventObservable(eventName) {
return Observable_1.Observable.fromEventPattern(function addHandler(h) {
saxStream.on(eventName, h);
}, function delHandler() { });
}
// TODO get the webservice to return JSON so we don't need to parse XML
var parsedStream = createSaxStreamEventObservable('opentag')
.filter(function (node) {
return node.name === 'ns1:success' || node.name === 'ns1:failure';
})
.mergeMap(function (node) {
return createSaxStreamEventObservable('text')
.takeUntil(createSaxStreamEventObservable('opentag')
.concat(createSaxStreamEventObservable('closetag')
.filter(function (node) {
return node.name === 'ns1:success' || node.name === 'ns1:failure';
})));
})
// TODO why do I need this filter?
.filter(function (x) { return x !== '\n'; })
.map(function (message) {
return {
status: xhr.status,
statusText: xhr.statusText,
message: message,
};
});
// NOTE: this kludge was added so that the Observable
// could be observed by its subscriber.
// It wasn't observed otherwise, probably because
// it's hot.
setTimeout(function () {
saxStream.write(xhr.response);
saxStream.end();
}, 20);
return parsedStream;
}
exports.updatePathway = updatePathway;
;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MUmVzcG9uc2VQYXJzZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1hNTFJlc3BvbnNlUGFyc2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDhDQUE2QztBQUM3QyxpQ0FBK0I7QUFDL0Isc0NBQW9DO0FBQ3BDLGdEQUE4QztBQUM5QyxvQ0FBa0M7QUFDbEMsb0NBQWtDO0FBQ2xDLHVDQUFxQztBQUNyQyx5QkFBMkI7QUFFM0IsdUJBQThCLFlBQTBCO0lBS3ZELElBQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDN0IsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLElBQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQztJQUU1RSx3Q0FBd0MsU0FBUztRQUNoRCxPQUFPLHVCQUFVLENBQUMsZ0JBQWdCLENBQ2pDLG9CQUFvQixDQUFDO1lBQ3BCLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLENBQUMsRUFDRCx3QkFBdUIsQ0FBQyxDQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVELHVFQUF1RTtJQUN2RSxJQUFNLFlBQVksR0FBRyw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7U0FDNUQsTUFBTSxDQUFDLFVBQVMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDO0lBQ25FLENBQUMsQ0FBQztTQUNELFFBQVEsQ0FBQyxVQUFTLElBQUk7UUFDdEIsT0FBTyw4QkFBOEIsQ0FBQyxNQUFNLENBQUM7YUFDM0MsU0FBUyxDQUNSLDhCQUE4QixDQUFDLFNBQVMsQ0FBQzthQUN2QyxNQUFNLENBQ0wsOEJBQThCLENBQUMsVUFBVSxDQUFDO2FBQ3hDLE1BQU0sQ0FBQyxVQUFTLElBQVM7WUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FDSixDQUNILENBQUM7SUFDSixDQUFDLENBQUM7UUFDRixrQ0FBa0M7U0FDakMsTUFBTSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxLQUFLLElBQUksRUFBVixDQUFVLENBQUM7U0FDdkIsR0FBRyxDQUFDLFVBQVMsT0FBTztRQUNwQixPQUFPO1lBQ04sTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUMxQixPQUFPLEVBQUUsT0FBTztTQUNoQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSixxREFBcUQ7SUFDcEQsdUNBQXVDO0lBQ3ZDLGlEQUFpRDtJQUNqRCxZQUFZO0lBQ2IsVUFBVSxDQUFDO1FBQ1YsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVQLE9BQU8sWUFBbUIsQ0FBQztBQUM1QixDQUFDO0FBdkRELHNDQXVEQztBQUFBLENBQUMifQ==