Move large middleware to separate file for cleanliness

This commit is contained in:
Daniel Saewitz
2013-02-18 16:00:46 -05:00
parent c6db2c0578
commit 3372750f94
2 changed files with 38 additions and 51 deletions
+21 -51
View File
@@ -8,7 +8,8 @@ serverError = require './serverError'
MongoStore = require('connect-mongo')(express)
auth = require 'derby-auth'
priv = require './private'
habitrpgStore = require('./store')
habitrpgStore = require './store'
middleware = require './middleware'
## RACER CONFIGURATION ##
@@ -51,65 +52,34 @@ options =
mongo_store = new MongoStore {url: process.env.NODE_DB_URI}, ->
expressApp
#.use (req, res, next) ->
# if toobusy()
# return res.redirect 307, '/500.html'
# else
# next()
.use(express.favicon())
.use express.favicon()
# Gzip static files and serve from memory
.use(gzippo.staticGzip publicPath, maxAge: ONE_YEAR)
.use gzippo.staticGzip publicPath, maxAge: ONE_YEAR
# Gzip dynamically rendered content
.use(express.compress())
# Uncomment to add form data parsing support
.use(express.bodyParser())
.use(express.methodOverride())
.use express.compress()
.use express.bodyParser()
.use express.methodOverride()
# Uncomment and supply secret to add Derby session handling
# Derby session middleware creates req.session and socket.io sessions
.use(express.cookieParser())
.use(store.sessionMiddleware
.use express.cookieParser())
.use store.sessionMiddleware
secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE'
cookie: {maxAge: TWO_WEEKS} # defaults to 2 weeks? aka, can delete this line?
store: mongo_store
)
#show splash page for newcomers
.use (req, res, next) ->
# This was an API call, not a page load
return next() if req.is('json')
if !req.session.userId? and !req.query?.play?
res.redirect('/splash.html')
else
next()
# Show splash page for newcomers
.use middleware.splash
# Adds req.getModel method
.use(store.modelMiddleware())
# Middelware can be inserted after the modelMiddleware and before
# the app router to pass server accessible data to a model
.use(priv.middleware)
# HabitRPG Custom Middleware
.use (req, res, next) ->
model = req.getModel()
_view = model.get('_view') || {}
## Set _mobileDevice to true or false so view can exclude portions from mobile device
_view.mobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
_view.nodeEnv = process.env.NODE_ENV
model.set '_view', _view
next()
.use(auth(store, strategies, options))
.use store.modelMiddleware()
.use priv.middleware
.use middleware.view
.use auth(store, strategies, options)
# Creates an express middleware from the app's routes
.use(app.router())
.use('/v1', require('./api').middleware)
.use(require('./static').middleware)
.use(require('./deprecated').middleware)
.use(expressApp.router)
.use(serverError root)
.use app.router()
.use '/v1', require('./api').middleware
.use require('./static').middleware
.use require('./deprecated').middleware
.use expressApp.router
.use serverError(root)
priv.routes(expressApp)
+17
View File
@@ -0,0 +1,17 @@
module.exports.splash = (req, res, next) ->
# This was an API call, not a page load
return next() if req.is('json')
if !req.session.userId? and !req.query?.play?
res.redirect('/splash.html')
else
next()
module.exports.view = (req, res, next) ->
model = req.getModel()
_view = model.get('_view') || {}
## Set _mobileDevice to true or false so view can exclude portions from mobile device
_view.mobileDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(req.header 'User-Agent')
_view.nodeEnv = process.env.NODE_ENV
model.set '_view', _view
next()