diff --git a/lib/server/commander.js b/lib/server/commander.js index 73375965..c4eb7c01 100644 --- a/lib/server/commander.js +++ b/lib/server/commander.js @@ -29,120 +29,6 @@ IndexProcessingFunc = null; - function getQuery(pReq){ - var lQuery, lParsedUrl; - - if(pReq){ - lParsedUrl = url.parse(pReq.url); - lQuery = lParsedUrl.query; - } - - return lQuery; - } - - function getPath(pReq){ - var lParsedUrl = url.parse(pReq.url), - lPath = lParsedUrl.pathname; - - return lPath; - } - - function getDirPath(pReq){ - var lPath = getPath(pReq); - - /* Если мы не в корне добавляем слеш к будующим ссылкам */ - if(lPath !== '/') - lPath += '/'; - - return lPath; - } - - function getCleanPath(pReq){ - var lPath = getPath(pReq), - lRet = Util.removeStr(lPath, [NO_JS, FS]) || '/'; - - return lRet; - } - - function call(pFunc, pParams){ - var lFunc = function(pError, pData){ - Util.exec(pFunc, { - error : pError, - data : pData, - params : pParams - }); - }; - - return lFunc; - } - - function noJS(pReq){ - var lNoJS, lPath; - - if(pReq){ - lPath = getPath(pReq); - - lNoJS = Util.isContainStr(lPath, CloudFunc.NoJS) - && lPath === '/' && getQuery() !== 'json'; - } - - return lNoJS; - } - - function isGZIP(pReq){ - var lEnc, lGZIP; - if(pReq){ - lEnc = pReq.headers['accept-encoding'] || '', - lGZIP = lEnc.match(/\bgzip\b/); - } - - return lGZIP; - } - - /** - * Функция высылает ответ серверу - * @param pHead - заголовок - * @param Data - данные - * @param pName - имя отсылаемого файла - */ - function sendResponse(pParams){ - var lRet = Util.checkObjTrue(pParams, - ['name', 'data', 'request', 'response']); - - if(lRet){ - var p = pParams; - - var lPath = p.name || getCleanPath(p.request), - lQuery = getQuery(p.request), - /* download, json */ - lGzip = isGZIP(p.request), - lHead = main.generateHeaders(lPath, lGzip, lQuery); - - /* если браузер поддерживает gzip-сжатие - сжимаем данные*/ - Util.ifExec(!lGzip, - function(pParams){ - var lRet = Util.checkObj(pParams, ['status', 'data']); - - if(lRet){ - p.status = pParams.status; - p.data = pParams.data; - } - - p.response.writeHead(p.status || OK, lHead); - p.request.end(); - - Util.log(lPath + ' sended'); - Util.log( p.status === NOT_FOUND && p.data ); - }, - - function(pCallBack){ - zlib.gzip (call(gzipData, { - callback : pCallBack, - data : p.data - })); - }); - } - } exports.sendContent = function(pParams){ var lRet = Util.checkObj(pParams, @@ -427,12 +313,127 @@ lData.data = p.data; } else{ - lData.status = NOT_FOUND, - lData.data = p.error.toString(), + lData.status = NOT_FOUND; + lData.data = p.error.toString(); } Util.exec(c.callback, lData); } } + function getQuery(pReq){ + var lQuery, lParsedUrl; + + if(pReq){ + lParsedUrl = url.parse(pReq.url); + lQuery = lParsedUrl.query; + } + + return lQuery; + } + + function getPath(pReq){ + var lParsedUrl = url.parse(pReq.url), + lPath = lParsedUrl.pathname; + + return lPath; + } + + function getDirPath(pReq){ + var lPath = getPath(pReq); + + /* Если мы не в корне добавляем слеш к будующим ссылкам */ + if(lPath !== '/') + lPath += '/'; + + return lPath; + } + + function getCleanPath(pReq){ + var lPath = getPath(pReq), + lRet = Util.removeStr(lPath, [NO_JS, FS]) || '/'; + + return lRet; + } + + function call(pFunc, pParams){ + var lFunc = function(pError, pData){ + Util.exec(pFunc, { + error : pError, + data : pData, + params : pParams + }); + }; + + return lFunc; + } + + function noJS(pReq){ + var lNoJS, lPath; + + if(pReq){ + lPath = getPath(pReq); + + lNoJS = Util.isContainStr(lPath, CloudFunc.NoJS) + && lPath === '/' && getQuery() !== 'json'; + } + + return lNoJS; + } + + function isGZIP(pReq){ + var lEnc, lGZIP; + if(pReq){ + lEnc = pReq.headers['accept-encoding'] || '', + lGZIP = lEnc.match(/\bgzip\b/); + } + + return lGZIP; + } + + /** + * Функция высылает ответ серверу + * @param pHead - заголовок + * @param Data - данные + * @param pName - имя отсылаемого файла + */ + function sendResponse(pParams){ + var lRet = Util.checkObjTrue(pParams, + ['name', 'data', 'request', 'response']); + + if(lRet){ + var p = pParams; + + var lPath = p.name || getCleanPath(p.request), + lQuery = getQuery(p.request), + /* download, json */ + lGzip = isGZIP(p.request), + lHead = main.generateHeaders(lPath, lGzip, lQuery); + + /* если браузер поддерживает gzip-сжатие - сжимаем данные*/ + Util.ifExec(!lGzip, + function(pParams){ + var lRet = Util.checkObj(pParams, ['status', 'data']); + + if(lRet){ + p.status = pParams.status; + p.data = pParams.data; + } + + p.response.writeHead(p.status || OK, lHead); + p.request.end(); + + Util.log(lPath + ' sended'); + Util.log( p.status === NOT_FOUND && p.data ); + }, + + function(pCallBack){ + zlib.gzip (call(gzipData, { + callback : pCallBack, + data : p.data + })); + }); + } + } + })(); \ No newline at end of file