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' +
|
|
'# stream.createPipe' + '\n' +
|
|
'# http://cloudcmd.io' + '\n');
|
|
|
|
var main = global.cloudcmd.main,
|
|
fs = main.fs,
|
|
Util = main.util,
|
|
zlib = main.zlib;
|
|
|
|
exports.getBody = getBody;
|
|
|
|
exports.create = function(pParams) {
|
|
var lZlib, lError, lMsg, lRead, lWrite, lIsFsWrite,
|
|
p = pParams;
|
|
|
|
if (p) {
|
|
lRead = p.read || fs.createReadStream(p.from, {
|
|
bufferSize: 4 * 1024
|
|
});
|
|
|
|
if (p.write)
|
|
lWrite = p.write;
|
|
else {
|
|
lWrite = fs.createWriteStream(p.to);
|
|
lIsFsWrite = true;
|
|
}
|
|
|
|
lError = function(pError) {
|
|
Util.exec(p.callback, pError);
|
|
};
|
|
|
|
if (p.gzip) {
|
|
lZlib = zlib.createGzip();
|
|
lRead.on('error', lError);
|
|
lRead = lRead.pipe(lZlib);
|
|
}
|
|
|
|
lWrite.on('error', lError);
|
|
lRead.on('error', lError);
|
|
|
|
Util.ifExec(!lIsFsWrite, function() {
|
|
lRead.on('data', function(data) {
|
|
lWrite.write(data);
|
|
});
|
|
|
|
lRead.on('end', function() {
|
|
if (!p.notEnd)
|
|
lWrite.end();
|
|
|
|
Util.exec(p.callback);
|
|
});
|
|
}, function(pCallBack) {
|
|
lWrite.on('open', pCallBack);
|
|
});
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 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);
|
|
});
|
|
}
|
|
})();
|