diff --git a/lib/server/flop.js b/lib/server/flop.js index 0e9d9e4a..ea981760 100644 --- a/lib/server/flop.js +++ b/lib/server/flop.js @@ -53,36 +53,6 @@ } }; - exports.write = function(path, data, option, callback) { - var optionsPipe, - type = Util.getType(data); - - Util.checkArgs(arguments, ['path', 'data', 'callback']); - - if (!callback) - callback = option; - - if (!type) - type = ''; - else if (type instanceof Buffer) - type = 'string'; - - switch(type) { - case 'string': - fs.writeFile(path, data, callback); - break; - - case 'object': - optionsPipe = { - gunzip : option === 'unzip', - gzip : option === 'zip' - }; - - pipe.create(data, path, optionsPipe, callback); - break; - } - }; - exports.delete = function(path, callback) { if (rimraf) rimraf(path, callback); @@ -110,35 +80,17 @@ }); }; - exports.copy = function(from, to, type, callback) { - var options; + exports.copy = function(from, to, callback) { + Util.checkArgs(arguments, ['from', 'to', 'callback']); - if (!callback) { - callback = type; - type = null; - } - - switch(type) { - default: - (ncp || pipe.create)(from, to, callback); - break; - - case 'zip': - options = { - gzip : true - }; + pipe.create(from, to, function(error) { + var isDir = error && error.code === 'EISDIR'; - pipe.create(from, to, options, callback); - break; - - case 'unzip': - options = { - gunzip : true - }; - - pipe.create(from, to, options, callback); - break; - } + if (isDir) + ncp(from, to, callback); + else + callback(error); + }); }; function tryRequire(name) { diff --git a/lib/server/pack.js b/lib/server/pack.js new file mode 100644 index 00000000..9313c1f7 --- /dev/null +++ b/lib/server/pack.js @@ -0,0 +1,22 @@ +(function() { + 'use strict'; + + var DIR = './', + pipe = require(DIR + 'pipe'); + + exports.gzip = function(from, to, callback) { + var options = { + gzip : true + }; + + pipe.create(from, to, options, callback); + }; + + exports.gunzip = function(from, to, callback) { + var options = { + gunzip : true + }; + + pipe.create(from, to, options, callback); + }; +})(); diff --git a/lib/server/rest.js b/lib/server/rest.js index 41587eb1..21d49127 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -34,7 +34,10 @@ name:'api.json' }), - flop = require('./flop'), + DIR = './', + + flop = require(DIR + 'flop'), + pack = require(DIR + 'pack'), NOT_LOG = true; @@ -314,7 +317,7 @@ from = files.from; to = files.to || from + '.zip'; - flop.copy(from, to, 'zip', function(error) { + pack.gzip(from, to, function(error) { var name = path.basename(files.from); if (error) @@ -332,7 +335,7 @@ from = files.from; to = files.to || Util.rmStrOnce(files.from, ['.zip', '.gzip']); - flop.copy(from, to, 'unzip', function(error) { + pack.gunzip(from, to, function(error) { var name = path.basename(files.from); if (error) diff --git a/lib/server/rest/fs/put.js b/lib/server/rest/fs/put.js index 6da7babd..ea6f91fe 100644 --- a/lib/server/rest/fs/put.js +++ b/lib/server/rest/fs/put.js @@ -8,8 +8,11 @@ CloudFunc = main.cloudfunc, DIR = '../../../', DIR_SERVER = DIR + 'server/', - flop = require(DIR_SERVER + 'flop'), + Util = require(DIR + 'util'), + + flop = require(DIR_SERVER + 'flop'), + pack = require(DIR_SERVER + 'pack'), pipe = require(DIR_SERVER + 'pipe'); exports.onPut = onPut; @@ -36,7 +39,7 @@ break; default: - flop.write(name, readStream, 'unzip', function(error) { + pack.gunzip(readStream, path, function(error) { var msg; if (!error)