Files
tankz/tasks/download.js
2017-12-17 22:29:16 +03:00

25 lines
849 B
JavaScript

'use strict';
const path = require('path');
const request = require('request');
const progress = require('request-progress');
const source = require('vinyl-source-stream');
const gutil = require('gulp-util');
module.exports = (url) => {
const name = path.basename(url);
let stream = null;
return stream = progress(request({url: url, encoding: null}, function(error, response, body) {
try {
if (error) throw error;
if (response.statusCode !== 200) throw `${response.statusCode} ${response.statusMessage}`;
} catch (e) {
this.emit('error', new gutil.PluginError({plugin: 'download', message: e}));
}
}))
.on('error', (e) => stream.emit('error', e))
.on('progress', (p) => stream.emit('progress', p))
.pipe(source(name));
};