123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 'use strict'
- var Router ={
- go:function(res,req){
- let query = URLParse.query;
- if(enterURI.match(WhiteList.HandlerRules)){
- return Router.getHandler(url,res,req);
- }else if(enterURI.match(WhiteList.StaticRules)){
- return STATIC.load(ROOTPATH+URLParse.pathname,query,res);
- }else{
- Router._error('Router Go ERROR:'+url,res);
- Logger.error(url+' WhiteList Check error!');
- }
- },
- getHandler:function(url,res,req){
- let URLParse = URL.parse(HANDLERPATH+url,true);
- let URLArr = URLParse.pathname.split('/');
- if(URLArr[URLArr.length-1]=='') URLArr[URLArr.length-1]='index';
- let FileName = URLArr.join('/')+'.js';
- let mod,call='index';
- if(!FILE.existsSync(FileName)){
- call = URLArr.pop();
- FileName = URLArr.join('/')+'.js';
- }
- try{
- mod = require(FileName);
- if(mod['__construct']){
- let cons = mod['__construct'](res,req,URLParse.query);
- if(cons && cons.status=='error') Router._error('Router Go ERROR:'+cons.msg,res);
- }
- mod[call](res,req,URLParse.query);
- }catch(err){
- Logger.error(err);
- res.writeHead(404, {'Content-Type': 'text/html'});
- res.end('404');
- }
- },
- _error:function(log,res,req){
- res.writeHead(404, {'Content-Type': 'text/html'});
- res.end('404');
- }
- };
- module.exports = function(req,res){
- let URI = req.url=='/'?'/index':req.url;
- let URLParse = URL.parse(URI,true);
- let URLArr = URLParse.pathname.split('/');
- let enterURI = String(URLArr[1])==''?'index':String(URLArr[1]);
- let isAsset = enterURI==Config.asset_path?true:false;
- req._GET = URLParse.query;
- if(isAsset){
- let assetPath = URLArr.join('/').replace('/'+Config.asset_path,'');
- Router.goAsset(assetPath,req,res);
- return;
- }
- req._Cookie = {};
- req.headers.cookie && req.headers.cookie.split(';').forEach(function(Cookie){
- let parts = Cookie.split('=');
- let key = parts[0].trim();
- let value = (parts[1]||'').trim();
- if(parts.length>2){
- parts = parts.shift();
- value = parts.join('=').trim();
- }
- req._Cookie[key] = value;
- });
- Router.goHandler(URLParse.pathname,req,res);
- return this;
- };
|