UNPKG

@spalger/kibana

Version:

Kibana is an open source (Apache Licensed), browser based analytics and search dashboard for Elasticsearch. Kibana is a snap to setup and start using. Kibana strives to be easy to get started with, while also being flexible and powerful, just like Elastic

76 lines (64 loc) 2.26 kB
define(function (require) { return function fetchService(Private, Promise) { var _ = require('lodash'); var requestQueue = Private(require('ui/courier/_request_queue')); var fetchThese = Private(require('ui/courier/fetch/_fetch_these')); var callResponseHandlers = Private(require('ui/courier/fetch/_call_response_handlers')); var INCOMPLETE = Private(require('ui/courier/fetch/_req_status')).INCOMPLETE; function fetchQueued(strategy) { var requests = requestQueue.get(strategy); if (!requests.length) return Promise.resolve(); else return fetchThese(requests); } this.fetchQueued = fetchQueued; function fetchASource(source, strategy) { var defer = Promise.defer(); fetchThese([ source._createRequest(defer.resolve) ]); return defer.promise; } /** * Fetch a single doc source * @param {DocSource} source - The DocSource to request * @async */ this.doc = fetchASource; /** * Fetch a single search source * @param {SearchSource} source - The SearchSource to request * @async */ this.search = fetchASource; /** * Fetch a list of requests * @param {array} reqs - the requests to fetch * @async */ this.these = fetchThese; /** * Send responses to a list of requests, used when requests * should be skipped (like when a doc is updated with an index). * * This logic is a simplified version of what fetch_these does, and * could have been added elsewhere, but I would rather the logic be * here than outside the courier/fetch module. * * @param {array[Request]} requests - the list of requests to respond to * @param {array[any]} responses - the list of responses for each request */ this.fakeFetchThese = function (requests, responses) { return Promise.map(requests, function (req) { return req.start(); }) .then(function () { return callResponseHandlers(requests, responses); }) .then(function (requestStates) { if (_.contains(requestStates, INCOMPLETE)) { throw new Error('responding to requests did not complete!'); } }); }; }; });