diff --git a/lib/server/rest.js b/lib/server/rest.js index 77475ce2..994598ec 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -130,31 +130,18 @@ switch (p.request.method) { case 'GET': - isGet = onFSGet(query, p.name, function(error, result) { - checkSendError(error, params, function() { - sendResponse(p, result); - }); - }); - - if (!isGet) - fs.stat(p.name, function(error, stat) { - var getDirContent = main.commander.getDirContent; + onFSGet(query, p.name, function(error, data, name, isFile) { + if (error) + sendError(params, error); + else if (isFile) { + p.name = name; + p.data = data; - if (error) - Util.exec(error); - else - if (!stat.isDirectory()) - main.sendFile(p); - else - getDirContent(p.name, function(pError, pData) { - checkSendError(pError, p, function() { - p.name += '.json'; - p.data = Util.stringifyJSON(pData); - sendResponse(p); - }); - }); - }); - + main.sendFile(p); + } else + sendResponse(p, data); + }); + break; case 'PUT': @@ -301,7 +288,8 @@ } function onFSGet(query, name, callback) { - var msg, hash, ret = true; + var error, hash, + func = Util.retExec(callback); switch (query) { case 'size': @@ -309,14 +297,18 @@ if (!error) size = CloudFunc.getShortSize(size); - Util.exec(callback, error, size); + func(error, size); }); break; case 'time': time.get(name, function(error, time) { - var timeStr = time.toString(); - Util.exec(callback, error, timeStr); + var timeStr; + + if (!error) + timeStr = time.toString(); + + func(error, timeStr); }); break; @@ -324,26 +316,46 @@ hash = Hash.create(); if (!hash) { - msg = 'not suported, try update node'; - msg = CloudFunc.formatMsg('hash', msg, 'error'); - Util.exec(callback, msg); + error = 'not suported, try update node'; + error = CloudFunc.formatMsg('hash', error, 'error'); + func(error); } else pipe.create({ from : name, write : hash, callback : function (error) { - var hex = hash.get(); - Util.exec(callback, error, hex); + var hex; + + if (!error) + hash = hash.get(); + + func(error, hash); } }); break; default: - ret = false; + fs.stat(name, function(error, stat) { + var getDirContent = main.commander.getDirContent, + isFile = !stat.isDirectory(); + + if (error) + func(error); + else + if (isFile) + func(null, null, null, isFile); + else + getDirContent(name, function(error, data) { + if (!error) { + name += '.json'; + data = Util.stringifyJSON(data); + } + + func(error, name, data); + }); + }); break; } - - return ret; } /**