From 22ad77fe1b221e64426c8a22d2cec39d0a0a8c63 Mon Sep 17 00:00:00 2001 From: Eran Hammer Date: Wed, 27 Feb 2013 00:50:44 -0800 Subject: [PATCH] refactor router --- lib/router.js | 127 +++++++++++++++++++++++++++++++++++ lib/server.js | 138 ++------------------------------------ test/integration/proxy.js | 2 +- test/unit/server.js | 53 +-------------- 4 files changed, 136 insertions(+), 184 deletions(-) create mode 100755 lib/router.js diff --git a/lib/router.js b/lib/router.js new file mode 100755 index 000000000..773b762e1 --- /dev/null +++ b/lib/router.js @@ -0,0 +1,127 @@ +// Load modules + +var Route = require('./route'); +var Utils = require('./utils'); + + +// Declare internals + +var internals = {}; + + +module.exports = internals.Router = function (server) { + + this.server = server; + this.table = {}; // Array per HTTP method, including * for catch-all + + this.notfound = new Route({ + method: 'notfound', + path: '/{p*}', + config: { + auth: { mode: 'none' }, // In case defaults are set otherwise + handler: 'notFound' + } + }, server); + + if (server.settings.cors) { + this.cors = new Route({ + path: '/{p*}', + method: 'options', + config: { + auth: { mode: 'none' }, // In case defaults are set otherwise + handler: function (request) { + + request.reply({}); + } + } + }, server); + } +}; + + +internals.Router.prototype.route = function (request) { + + // Lookup route + + var method = (request.method === 'head' ? 'get' : request.method); + + var routes = this.table[method] || []; + for (var i = 0, il = routes.length; i