UNPKG

libzotero

Version:
66 lines (51 loc) 1.39 kB
'use strict'; var log = require('./Log.js').Logger('libZotero:Fetcher'); var Fetcher = function Fetcher() { var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var defaultConfig = { start: 0, limit: 25 }; this.config = Z.extend({}, defaultConfig, config); this.hasMore = true; this.results = []; this.totalResults = null; this.resultInfo = {}; }; Fetcher.prototype.next = function () { var _this = this; if (this.hasMore == false) { return Promise.resolve(null); } var urlconfig = Z.extend({}, this.config); var p = Zotero.net.queueRequest({ url: urlconfig }); p.then(function (response) { if (response.parsedLinks.hasOwnProperty('next')) { _this.hasMore = true; } else { _this.hasMore = false; } _this.results = _this.results.concat(response.data); _this.totalResults = response.totalResults; return response; }); var nconfig = Z.extend({}, urlconfig); nconfig.start = nconfig.start + nconfig.limit; this.config = nconfig; return p; }; Fetcher.prototype.fetchAll = function () { var _this2 = this; var results = []; var tryNext = function tryNext() { if (_this2.hasMore) { return _this2.next().then(function (response) { results = results.concat(response.data); }).then(tryNext); } else { return Promise.resolve(results); } }; return tryNext(); }; module.exports = Fetcher;