From 349e9eaef66b1eb3945d4adcf21a6f3f3e4742d5 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sun, 25 Dec 2011 09:51:42 +0000 Subject: [PATCH] turned the redirect thing into a loadable host_redirect middleware --- app.js | 12 ++++-------- middleware/host_redirect.js | 16 ++++++++++++++++ src/app.coffee | 9 +++------ src/middleware/host_redirect.coffee | 7 +++++++ 4 files changed, 30 insertions(+), 14 deletions(-) create mode 100644 middleware/host_redirect.js create mode 100644 src/middleware/host_redirect.coffee diff --git a/app.js b/app.js index 5d2bc79..b30e5b5 100644 --- a/app.js +++ b/app.js @@ -9,13 +9,6 @@ app.set('views', __dirname + '/views'); app.set('view engine', 'coffee'); app.register('.coffee', require('coffeekup').adapters.express); - app.use(function(req, res, next) { - if (req.header('Host') === 'www.heartb.it') { - return res.redirect('http://heartb.it/'); - } else { - return next(); - } - }); app.use(express.bodyParser()); app.use(express.methodOverride()); return app.use(express.static(__dirname + '/public')); @@ -29,7 +22,10 @@ }); app.configure('production', function() { - return app.use(express.errorHandler); + app.use(express.errorHandler()); + return app.use(require('./middleware/host_redirect')({ + "www.heartb.it": "http://heartb.it" + })); }); app.get('/', function(req, res) { diff --git a/middleware/host_redirect.js b/middleware/host_redirect.js new file mode 100644 index 0000000..2e4fb21 --- /dev/null +++ b/middleware/host_redirect.js @@ -0,0 +1,16 @@ +(function() { + + module.exports = function(redirect_map) { + if (redirect_map == null) redirect_map = {}; + return function(req, res, next) { + var host; + host = req.header('Host'); + if (redirect_map[host]) { + return res.redirect(redirect_map[host]); + } else { + return next(); + } + }; + }; + +}).call(this); diff --git a/src/app.coffee b/src/app.coffee index 311f401..08779d4 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -8,11 +8,6 @@ app.configure -> app.set 'views', __dirname + '/views' app.set 'view engine', 'coffee' app.register '.coffee', require('coffeekup').adapters.express - app.use (req, res, next) -> - if req.header('Host') == 'www.heartb.it' - res.redirect('http://heartb.it/') - else - next() app.use express.bodyParser() app.use express.methodOverride() app.use express.static(__dirname + '/public') @@ -21,7 +16,9 @@ app.configure 'development', -> app.use express.errorHandler(dumpExceptions: true, showStack: true) app.configure 'production', -> - app.use express.errorHandler + app.use express.errorHandler() + app.use require('./middleware/host_redirect') + "www.heartb.it": "http://heartb.it" # Routes diff --git a/src/middleware/host_redirect.coffee b/src/middleware/host_redirect.coffee new file mode 100644 index 0000000..5ac2684 --- /dev/null +++ b/src/middleware/host_redirect.coffee @@ -0,0 +1,7 @@ +module.exports = (redirect_map = {}) -> + (req, res, next) -> + host = req.header('Host') + if redirect_map[host] + res.redirect(redirect_map[host]) + else + next() \ No newline at end of file