UNPKG

kibana-riya

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

102 lines (76 loc) 2.92 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { var callNext = step.bind(null, 'next'); var callThrow = step.bind(null, 'throw'); function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(callNext, callThrow); } } callNext(); }); }; } var _wreck = require('wreck'); var _wreck2 = _interopRequireDefault(_wreck); var _progress = require('../progress'); var _progress2 = _interopRequireDefault(_progress); var _bluebird = require('bluebird'); var _fs = require('fs'); function sendRequest(_ref) { var sourceUrl = _ref.sourceUrl; var timeout = _ref.timeout; var maxRedirects = 11; //Because this one goes to 11. return (0, _bluebird.fromNode)(function (cb) { var req = _wreck2['default'].request('GET', sourceUrl, { timeout: timeout, redirects: maxRedirects }, function (err, resp) { if (err) { if (err.code === 'ECONNREFUSED') { err = new Error('ENOTFOUND'); } return cb(err); } if (resp.statusCode >= 400) { return cb(new Error('ENOTFOUND')); } cb(null, { req: req, resp: resp }); }); }); } function downloadResponse(_ref2) { var resp = _ref2.resp; var targetPath = _ref2.targetPath; var progress = _ref2.progress; return new Promise(function (resolve, reject) { var writeStream = (0, _fs.createWriteStream)(targetPath); // if either stream errors, fail quickly resp.on('error', reject); writeStream.on('error', reject); // report progress as we download resp.on('data', function (chunk) { progress.progress(chunk.length); }); // write the download to the file system resp.pipe(writeStream); // when the write is done, we are done writeStream.on('finish', resolve); }); } /* Responsible for managing http transfers */ exports['default'] = _asyncToGenerator(function* (logger, sourceUrl, targetPath, timeout) { try { var _ref3 = yield sendRequest({ sourceUrl: sourceUrl, timeout: timeout }); var req = _ref3.req; var resp = _ref3.resp; try { var totalSize = parseFloat(resp.headers['content-length']) || 0; var progress = new _progress2['default'](logger); progress.init(totalSize); yield downloadResponse({ resp: resp, targetPath: targetPath, progress: progress }); progress.complete(); } catch (err) { req.abort(); throw err; } } catch (err) { if (err.message !== 'ENOTFOUND') { logger.error(err); } throw err; } }); module.exports = exports['default'];