diff --git a/lib/server/main.js b/lib/server/main.js index 6bc1a51c..3aca2373 100644 --- a/lib/server/main.js +++ b/lib/server/main.js @@ -12,7 +12,8 @@ ext, path, fs, zlib, url, - OK, FILE_NOT_FOUND, MOVED_PERMANENTLY, + OK, FILE_NOT_FOUND, MOVED_PERMANENTLY = 301, + REQUEST, RESPONSE, Config = { server : true, @@ -24,10 +25,9 @@ exports.OK = OK = 200; exports.FILE_NOT_FOUND = FILE_NOT_FOUND = 404; - exports.MOVED_PERMANENTLY = MOVED_PERMANENTLY = 301; - exports.REQUEST = 'request'; - exports.RESPONSE = 'response'; + exports.REQUEST = REQUEST = 'request'; + exports.RESPONSE = RESPONSE = 'response'; /* Native Modules*/ exports.crypto = require('crypto'), @@ -175,11 +175,11 @@ * https://developers.google.com/speed/docs/best-practices/caching?hl=ru#LeverageProxyCaching */ function generateHeaders(pParams){ - var lRet = Util.checkObjTrue(pParams, ['name']), - p = pParams; + var lRet = Util.checkObjTrue(pParams, ['name']); if(lRet){ - var lExt = Util.getExtension(p.name), + var p = pParams, + lExt = Util.getExtension(p.name), lType = ext[lExt] || 'text/plain', lContentEncoding = ''; @@ -198,10 +198,8 @@ 'Vary': 'Accept-Encoding' }; - if( !Util.strCmp(lExt, '.appcache') && exports.config.cache){ - var lCacheControl = 31337 * 21; - lRet['cache-control'] = 'max-age=' + lCacheControl; - } + if( !Util.strCmp(lExt, '.appcache') && p.cache) + lRet['cache-control'] = 'max-age=' + 31337 * 21; if(p.gzip) lRet['content-encoding'] = 'gzip'; @@ -218,37 +216,36 @@ * @param pGzip - данные сжаты gzip'ом */ function sendFile(pParams){ - var lRet, - lName, lReq, lRes, lGziped; + var lRet = checkParams(pParams); - if(pParams){ - lName = pParams.name, - lReq = pParams.request, - lRes = pParams.response; - lGziped = pParams.gziped; - } - if(lName && lRes && lReq){ - var lGzip = isGZIP(lReq), + if(lRet){ + var p = pParams, + lGzip = isGZIP(p.request) && p.gzip, - lReadStream = fs.createReadStream(lName, { + lReadStream = fs.createReadStream(p.name, { 'bufferSize': 4 * 1024 }); lReadStream.on('error', function(pError){ - lRes.writeHead(FILE_NOT_FOUND, 'OK'); - lRes.end(String(pError)); + p.response.writeHead(FILE_NOT_FOUND, 'OK'); + p.response.end(String(pError)); }); - lRes.writeHead(OK, generateHeaders({ - name : lName, + p.response.writeHead(OK, generateHeaders({ + name : p.name, gzip : lGzip, - query : getQuery(lReq) + query : getQuery(p.request) }) ); - if (lGzip && !lGziped) - lReadStream = lReadStream.pipe( zlib.createGzip() ); + var lZipStream; - lReadStream.pipe(lRes); + if (lGzip && !p.gziped) + lZipStream = lReadStream.pipe( zlib.createGzip() ); + else + lZipStream = lReadStream; + + + lZipStream.pipe(p.response); lRet = true; } @@ -264,8 +261,7 @@ * @param pName - имя отсылаемого файла */ function sendResponse(pParams, pData){ - var lRet = Util.checkObjTrue(pParams, - ['name', 'request', 'response']); + var lRet = checkParams(pParams); if(lRet){ var p = pParams; @@ -309,7 +305,7 @@ */ function redirect(pParams){ var lRet = Util.checkObjTrue(pParams, - ['response']); + [RESPONSE]); if(lRet){ var p = pParams; @@ -319,9 +315,12 @@ } } + + /** + * send error response + */ function sendError(pParams, pError){ - var lRet = Util.checkObjTrue(pParams, - ['name', 'request', 'response']); + var lRet = checkParams(pParams); if(lRet){ var p = pParams; @@ -364,7 +363,7 @@ } function checkParams(pParams, pAdditional){ - var lRet = Util.checkObjTrue( pParams, ['name', 'request', 'response'] ); + var lRet = Util.checkObjTrue( pParams, ['name', REQUEST, RESPONSE] ); if(lRet && pAdditional) lRet = Util.checkObjTrue( pParams, pAdditional);