diff --git a/lib/server/rest.js b/lib/server/rest.js index b316176f..6211560f 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -94,7 +94,7 @@ } function onFS(pParams) { - var p, lError, lMsg, lName, lZlib, lZipStream, lReadStream, lWriteStream, lSize, lQuery, + var p, lError, lMsg, lName, lZip, lReadStream, lSize, lQuery, lRet = main.checkParams(pParams); if (lRet){ @@ -145,41 +145,32 @@ }); else { - lName = p.name; - - lError = function(pError) { - main.sendError(pParams, pError); - }; if (lQuery === 'zip') { - lZlib = zlib.createGzip(); - lReadStream = fs.createReadStream(lName); - - lReadStream.on('error', lError); - - lReadStream = lReadStream.pipe(lZlib); - lName += '.' + lQuery; - lMsg = lQuery; + lZip = true; + lName = p.name + '.zip'; + lReadStream = fs.createReadStream(p.name); } else { - lReadStream = p.request; - lMsg = 'save'; + lName = p.name; + lReadStream = p.request; } - lWriteStream = fs.createWriteStream(lName); - - lWriteStream.on('error', lError); - lReadStream.on('error', lError); - - lWriteStream.on('open', function() { - lReadStream.pipe(lWriteStream); - - lReadStream.on('end', function() { - lName = path.basename(lName); - main.sendResponse(pParams, lMsg + ': ok("' + lName +'")'); - }); + putFile({ + name : lName, + read : lReadStream, + zip : lZip, + callback : function(pError, pMsg) { + if (pError) + main.sendError(pParams, pError); + else { + lName = path.basename(lName); + main.sendResponse(pParams, pMsg + ': ok("' + p.name +'")'); + } + } }); } break; + case 'DELETE': if (lQuery === 'dir') fs.rmdir(p.name, function(pError){ @@ -385,4 +376,37 @@ }); } + function putFile(pParams) { + var p, lZlib, lError, lMsg, lWrite, + lRet = Util.checkObj(pParams, ['name', 'read']); + + if (lRet) { + p = pParams; + lError = function(pError) { + Util.exec(p.callback, pError); + }; + + if (!p.zip) { + lMsg = 'save'; + } else { + lZlib = zlib.createGzip(); + p.read.on('error', lError); + p.read = p.read.pipe(lZlib); + lMsg = 'zip'; + } + + lWrite = fs.createWriteStream(p.name); + lWrite.on('error', lError); + p.read.on('error', lError); + + lWrite.on('open', function() { + p.read.pipe(lWrite); + + p.read.on('end', function() { + Util.exec(p.callback, null, lMsg); + }); + }); + } + } + })();