mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 18:55:26 +00:00
84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
(function () {
|
|
'use strict';
|
|
|
|
if (!global.cloudcmd)
|
|
return console.log(
|
|
'# pipe.js' + '\n' +
|
|
'# -----------' + '\n' +
|
|
'# Module is part of Cloud Commander,' + '\n' +
|
|
'# used for work with stream.' + '\n' +
|
|
'# If you wont to see at work call' + '\n' +
|
|
'# pipe.createPipe' + '\n' +
|
|
'# http://cloudcmd.io' + '\n');
|
|
|
|
var main = global.cloudcmd.main,
|
|
Util = main.util,
|
|
fs = require('fs'),
|
|
zlib = require('zlib');
|
|
|
|
exports.getBody = getBody;
|
|
|
|
exports.create = function(params) {
|
|
var gzip, onError, read, write, isFsWrite,
|
|
p = params;
|
|
|
|
if (p) {
|
|
read = p.read || fs.createReadStream(p.from, {
|
|
bufferSize: 4 * 1024
|
|
});
|
|
|
|
if (p.write)
|
|
write = p.write;
|
|
else {
|
|
write = fs.createWriteStream(p.to);
|
|
isFsWrite = true;
|
|
}
|
|
|
|
onError = function(error) {
|
|
Util.exec(p.callback, error);
|
|
};
|
|
|
|
if (p.gzip) {
|
|
gzip = zlib.createGzip();
|
|
read.on('error', onError);
|
|
read = read.pipe(gzip);
|
|
}
|
|
|
|
write.on('error', onError);
|
|
read.on('error', onError);
|
|
|
|
Util.ifExec(!isFsWrite, function() {
|
|
read.on('data', function(data) {
|
|
write.write(data);
|
|
});
|
|
|
|
read.on('end', function() {
|
|
if (!p.notEnd)
|
|
write.end();
|
|
|
|
Util.exec(p.callback);
|
|
});
|
|
}, function(callback) {
|
|
write.on('open', callback);
|
|
});
|
|
}
|
|
};
|
|
|
|
/**
|
|
* get body of readStream
|
|
*
|
|
* @param readStream
|
|
* @param callback
|
|
*/
|
|
function getBody(readStream, callback) {
|
|
var body = '';
|
|
|
|
readStream.on('data', function(chunk) {
|
|
body += chunk;
|
|
});
|
|
|
|
readStream.on('end', function() {
|
|
Util.exec(callback, body);
|
|
});
|
|
}
|
|
})();
|