UNPKG

wikipathways-api-client

Version:
54 lines 4.06 kB
"use strict"; 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==