mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-03-14 07:00:01 -04:00
use a mapping for handlers, schemas, and routes
This commit is contained in:
parent
23a07303e3
commit
baf5ada19d
11 changed files with 64 additions and 55 deletions
41
server/commons/mapping.coffee
Normal file
41
server/commons/mapping.coffee
Normal file
|
@ -0,0 +1,41 @@
|
|||
|
||||
module.exports.handlers =
|
||||
'article': 'articles/article_handler'
|
||||
'campaign': 'campaigns/campaign_handler'
|
||||
'campaign_status': 'campaigns/campaign_status_handler'
|
||||
'file': 'files/file_handler'
|
||||
'level': 'levels/level_handler'
|
||||
'level_component': 'levels/components/level_component_handler'
|
||||
'level_draft': 'levels/drafts/level_draft_handler'
|
||||
'level_feedback': 'levels/feedbacks/level_feedback_handler'
|
||||
'level_session': 'levels/sessions/level_session_handler'
|
||||
'level_system': 'levels/systems/level_system_handler'
|
||||
'thang_type': 'levels/thangs/thang_type_handler'
|
||||
'user': 'users/user_handler'
|
||||
|
||||
module.exports.schemas =
|
||||
'article': 'articles/article_schema'
|
||||
'common': 'commons/schemas'
|
||||
#'file': 'files/file_schema'
|
||||
'i18n': 'commons/i18n_schema'
|
||||
'level': 'levels/level_schema'
|
||||
'level_component': 'levels/components/level_component_schema'
|
||||
'level_feedback': 'levels/feedbacks/level_feedback_schema'
|
||||
'level_session': 'levels/sessions/level_session_schema'
|
||||
'level_system': 'levels/systems/level_system_schema'
|
||||
'metaschema': 'commons/metaschema'
|
||||
'thang_component': 'levels/thangs/thang_component_schema'
|
||||
'thang_type': 'levels/thangs/thang_type_schema'
|
||||
'user': 'users/user_schema'
|
||||
|
||||
module.exports.routes =
|
||||
[
|
||||
'routes/auth'
|
||||
'routes/contact'
|
||||
'routes/db'
|
||||
'routes/file'
|
||||
'routes/folder'
|
||||
'routes/languages'
|
||||
'routes/mail'
|
||||
'routes/sprites'
|
||||
]
|
|
@ -7,7 +7,7 @@ config = require '../../server_config'
|
|||
errors = require '../commons/errors'
|
||||
mail = require '../commons/mail'
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
passport.serializeUser((user, done) -> done(null, user._id))
|
||||
passport.deserializeUser((id, done) ->
|
||||
User.findById(id, (err, user) -> done(err, user)))
|
||||
|
|
9
server/routes/base.coffee
Normal file
9
server/routes/base.coffee
Normal file
|
@ -0,0 +1,9 @@
|
|||
winston = require 'winston'
|
||||
routes = require('../commons/mapping').routes
|
||||
|
||||
module.exports.setup = (app) ->
|
||||
for route in routes
|
||||
do (route) ->
|
||||
module = require('../'+route)
|
||||
module.setup app
|
||||
winston.info "route module #{route} setup"
|
|
@ -2,7 +2,7 @@ config = require '../../server_config'
|
|||
winston = require 'winston'
|
||||
mail = require '../commons/mail'
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.post '/contact', (req, res) ->
|
||||
winston.info "Sending mail from #{req.body.email} saying #{req.body.message}"
|
||||
if config.isProduction
|
||||
|
|
|
@ -1,36 +1,9 @@
|
|||
winston = require 'winston'
|
||||
errors = require '../commons/errors'
|
||||
handlers = require('../commons/mapping').handlers
|
||||
schemas = require('../commons/mapping').schemas
|
||||
|
||||
handlers =
|
||||
'article': '../../server/articles/article_handler'
|
||||
'campaign': '../../server/campaigns/campaign_handler'
|
||||
'campaign_status': '../../server/campaigns/campaign_status_handler'
|
||||
'file': '../../server/files/file_handler'
|
||||
'level': '../../server/levels/level_handler'
|
||||
'level_component': '../../server/levels/components/level_component_handler'
|
||||
'level_draft': '../../server/levels/drafts/level_draft_handler'
|
||||
'level_feedback': '../../server/levels/feedbacks/level_feedback_handler'
|
||||
'level_session': '../../server/levels/sessions/level_session_handler'
|
||||
'level_system': '../../server/levels/systems/level_system_handler'
|
||||
'thang_type': '../../server/levels/thangs/thang_type_handler'
|
||||
'user': '../../server/users/user_handler'
|
||||
|
||||
schemas =
|
||||
'article': '../../server/articles/article_schema'
|
||||
'common': '../../server/commons/schemas'
|
||||
#'file': '../../server/files/file_schema'
|
||||
'i18n': '../../server/commons/i18n_schema'
|
||||
'level': '../../server/levels/level_schema'
|
||||
'level_component': '../../server/levels/components/level_component_schema'
|
||||
'level_feedback': '../../server/levels/feedbacks/level_feedback_schema'
|
||||
'level_session': '../../server/levels/sessions/level_session_schema'
|
||||
'level_system': '../../server/levels/systems/level_system_schema'
|
||||
'metaschema': '../../server/commons/metaschema'
|
||||
'thang_component': '../../server/levels/thangs/thang_component_schema'
|
||||
'thang_type': '../../server/levels/thangs/thang_type_schema'
|
||||
'user': '../../server/users/user_schema'
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.all '/db/*', (req, res) ->
|
||||
res.setHeader('Content-Type', 'application/json')
|
||||
module = req.path[4..]
|
||||
|
@ -42,7 +15,7 @@ module.exports.setupRoutes = (app) ->
|
|||
try
|
||||
moduleName = module.replace '.', '_'
|
||||
name = handlers[moduleName]
|
||||
module = require(name)
|
||||
module = require('../' + name)
|
||||
return module.getLatestVersion(req, res, parts[1], parts[3]) if parts[2] is 'version'
|
||||
return module.versions(req, res, parts[1]) if parts[2] is 'versions'
|
||||
return module.files(req, res, parts[1]) if parts[2] is 'files'
|
||||
|
@ -59,7 +32,7 @@ module.exports.setupRoutes = (app) ->
|
|||
getSchema = (req, res, moduleName) ->
|
||||
try
|
||||
name = schemas[moduleName.replace '.', '_']
|
||||
schema = require(name)
|
||||
schema = require('../' + name)
|
||||
|
||||
res.send(schema)
|
||||
res.end()
|
||||
|
|
|
@ -5,7 +5,7 @@ request = require 'request'
|
|||
mongoose = require('mongoose')
|
||||
errors = require '../commons/errors'
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.all '/file*', (req, res) ->
|
||||
return fileGet(req, res) if req.route.method is 'get'
|
||||
return filePost(req, res) if req.route.method is 'post'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
mongoose = require('mongoose')
|
||||
errors = require '../commons/errors'
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.all '/folder*', (req, res) ->
|
||||
return folderGet(req, res) if req.route.method is 'get'
|
||||
return errors.badMethod(res)
|
||||
|
|
|
@ -2,7 +2,7 @@ errors = require '../commons/errors'
|
|||
winston = require 'winston'
|
||||
locale = require '../../app/locale/locale' # requiring from app; will break if we stop serving from where app lives
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.all '/languages/add/:lang/:namespace', (req, res) ->
|
||||
# Should probably store these somewhere
|
||||
winston.info "#{req.params.lang}.#{req.params.namespace} missing an i18n key:", req.body
|
||||
|
|
|
@ -9,7 +9,7 @@ config = require '../../server_config'
|
|||
# console.log text
|
||||
# request.post 'http://requestb.in/1brdpaz1', { form: {log: text} }
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.all config.mail.mailchimpWebhook, (req, res) ->
|
||||
post = req.body
|
||||
# badLog("Got post data: #{JSON.stringify(post, null, '\t')}")
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# order the sprites and make the more recent ones
|
||||
# show up at the top
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
module.exports.setup = (app) ->
|
||||
app.get('/server/sprite-info', (req, res) ->
|
||||
exec = require('child_process').exec
|
||||
|
||||
|
|
|
@ -5,16 +5,9 @@ useragent = require 'express-useragent'
|
|||
fs = require 'graceful-fs'
|
||||
|
||||
database = require './server/commons/database'
|
||||
auth = require './server/routes/auth'
|
||||
db = require './server/routes/db'
|
||||
file = require './server/routes/file'
|
||||
folder = require './server/routes/folder'
|
||||
baseRoute = require './server/routes/base'
|
||||
user = require './server/users/user_handler'
|
||||
logging = require './server/commons/logging'
|
||||
sprites = require './server/routes/sprites'
|
||||
contact = require './server/routes/contact'
|
||||
languages = require './server/routes/languages'
|
||||
mail = require './server/routes/mail'
|
||||
|
||||
config = require './server_config'
|
||||
|
||||
|
@ -87,14 +80,7 @@ setupFacebookCrossDomainCommunicationRoute = (app) ->
|
|||
|
||||
exports.setupRoutes = (app) ->
|
||||
app.use app.router
|
||||
auth.setupRoutes app
|
||||
db.setupRoutes app
|
||||
sprites.setupRoutes app
|
||||
contact.setupRoutes app
|
||||
file.setupRoutes app
|
||||
folder.setupRoutes app
|
||||
languages.setupRoutes app
|
||||
mail.setupRoutes app
|
||||
baseRoute.setup app
|
||||
setupFacebookCrossDomainCommunicationRoute app
|
||||
setupFallbackRouteToIndex app
|
||||
|
||||
|
|
Loading…
Reference in a new issue