From 843723f501e3ac16c1f9899ee52f9dd0efd1e37f Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 25 Feb 2013 04:17:40 -0500 Subject: [PATCH] refactored --- cloudcmd.js | 20 +++-------- lib/server/main.js | 24 ++++++++++---- lib/server/rest.js | 82 ++++++++++++++++++++++++++-------------------- 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/cloudcmd.js b/cloudcmd.js index 62f84f52..336523f3 100644 --- a/cloudcmd.js +++ b/cloudcmd.js @@ -21,8 +21,6 @@ Minify = main.minify, Config = main.config, - REQUEST = 'request', - RESPONSE = 'response', INDEX = HTMLDIR + 'index.html', CONFIG_PATH = JSONDIR + 'config.json', FS = CloudFunc.FS; @@ -215,7 +213,7 @@ * routing of server queries */ function route(pParams){ - var lRet = checkParams(pParams); + var lRet = main.checkParams(pParams); if(lRet){ var p = pParams; @@ -241,7 +239,7 @@ } function sendCommanderContent(pParams){ - var lRet = checkParams(pParams); + var lRet = main.checkParams(pParams); if(lRet){ var p = pParams; p.name = Util.removeStr(p.name, CloudFunc.FS) || main.SLASH; @@ -262,7 +260,7 @@ } function processCommanderContent(pParams){ - var lRet = checkParams(pParams); + var lRet = main.checkParams(pParams); if(lRet){ var p = pParams; main.commander.getDirContent(p.name, function(pError, pJSON){ @@ -281,12 +279,10 @@ lList = '' + ''; - p.data = indexProcessing({ + main.sendResponse(p, indexProcessing({ additional : lList, data : pData.toString(), - }); - - main.sendResponse(p); + })); } else main.sendError(pParams, pError); @@ -299,12 +295,6 @@ } } - function checkParams(pParams){ - var lRet = Util.checkObjTrue( pParams, ['name', REQUEST, RESPONSE] ); - - return lRet; - } - function noJSTMPRedirection(pParams){ var MOVED_PERMANENTLY = 301, lPath = Util.removeStr(pParams.name, 'no-js/'); diff --git a/lib/server/main.js b/lib/server/main.js index a0f4aa8e..858f0753 100644 --- a/lib/server/main.js +++ b/lib/server/main.js @@ -53,13 +53,17 @@ exports.librequire = librequire, exports.srvrequire = srvrequire, exports.rootrequire = rootrequire, + exports.generateHeaders = generateHeaders, exports.getQuery = getQuery, exports.isGZIP = isGZIP, + exports.sendFile = sendFile, exports.sendResponse = sendResponse, exports.sendError = sendError, + exports.checkParams = checkParams, + /* compitability with old versions of node */ exports.fs.exists = exports.fs.exists || exports.path.exists, @@ -248,9 +252,9 @@ * @param Data - данные * @param pName - имя отсылаемого файла */ - function sendResponse(pParams){ + function sendResponse(pParams, pData){ var lRet = Util.checkObjTrue(pParams, - ['name', 'data', 'request', 'response']); + ['name', 'request', 'response']); if(lRet){ var p = pParams; @@ -282,7 +286,7 @@ }, function(pCallBack){ - zlib.gzip (p.data, Util.call(gzipData, { + zlib.gzip (p.data || pData, Util.call(gzipData, { callback : pCallBack })); }); @@ -296,7 +300,7 @@ if(lRet){ var p = pParams; p.status = FILE_NOT_FOUND; - p.data = pError.toString(); + p.data = p.data || pError.toString(); sendResponse(p); } } @@ -307,7 +311,7 @@ * @pName */ function gzipData(pParams){ - var lRet = checkParams(pParams); + var lRet = checkCallBackParams(pParams); if(lRet) lRet = Util.checkObj(pParams.params, ['callback']); @@ -329,10 +333,18 @@ } - function checkParams(pParams){ + function checkCallBackParams(pParams){ return Util.checkObj(pParams, ['error', 'data', 'params']); } + function checkParams(pParams, pAdditional){ + var lRet = Util.checkObjTrue( pParams, ['name', 'request', 'response'] ); + + if(lRet && pAdditional) + lRet = Util.checkObjTrue( pParams, pAdditional); + + return lRet; + } function getQuery(pReq){ var lQuery, lParsedUrl; diff --git a/lib/server/rest.js b/lib/server/rest.js index 0288f6a2..01185bdf 100644 --- a/lib/server/rest.js +++ b/lib/server/rest.js @@ -14,6 +14,7 @@ '# http://coderaiser.github.com/cloudcmd' + '\n'); var main = global.cloudcmd.main, + fs = main.fs, Util = main.util, CloudFunc = main.cloudfunc, OK = 200, @@ -107,42 +108,51 @@ } function onFS(pParams){ - var lResult, - lMethod = pParams.method, - lName = Util.removeStr(pParams.name, CloudFunc.FS) || '/'; - - switch(lMethod){ - case 'GET': - lResult = main.commander.getDirContent(lName, function(pError, pData){ - if(!pError){ - pParams.request.url += '.json'; - pParams.name = lName; - pParams.data = Util.stringifyJSON(pData); - main.sendResponse(pParams); - } - else - main.sendError(pParams, pError); - }); - - break; - - case 'PUT': - var lCmd = 'mkdir ' + lName; - main.child_process.exec(lCmd, function(pError, pStdout, pStderr){ - var lError = pError || pStderr; - if(!lError){ - pParams.data = pStdout; - main.sendResponse(pParams); - } - else - main.sendError(pParams, lError); - }); - - lResult = true; - break; - } - - return lResult; + var lRet = main.checkParams(pParams, ['method']); + if(lRet){ + var p = pParams; + p.name = Util.removeStr(pParams.name, CloudFunc.FS) || '/'; + + switch(p.method){ + case 'GET': + fs.stat(p.name, function(pError, pStat){ + if(!pError) + if( pStat.isDirectory() ) + main.commander.getDirContent(pParams.name, function(pError, pData){ + if(!pError){ + pParams.request.url += '.json'; + pParams.data = Util.stringifyJSON(pData); + main.sendResponse(pParams); + } + else + main.sendError(pParams, pError); + }); + else + main.sendFile(pParams); + else + main.sendError(pParams, pError); + + }); + + break; + + case 'PUT': + var lCmd = 'mkdir ' + p.Name; + main.child_process.exec(lCmd, function(pError, pStdout, pStderr){ + var lError = pError || pStderr; + if(!lError){ + pParams.data = pStdout; + main.sendResponse(pParams); + } + else + main.sendError(pParams, lError); + }); + + lRet = true; + break; + } + } + return lRet; } /**