From d67f7c666d66c322f107e2099743eb0b27232832 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Mon, 1 Jun 2015 16:45:21 -0700 Subject: [PATCH] refactor challenge controller to router syntax --- server/boot/challenge.js | 46 +++++++++++++++++++++++++--------- server/resources/middleware.js | 11 ++++---- server/server.js | 22 +--------------- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/server/boot/challenge.js b/server/boot/challenge.js index 48e8721209..97cf181d98 100644 --- a/server/boot/challenge.js +++ b/server/boot/challenge.js @@ -31,14 +31,34 @@ */ var R = require('ramda'), + express = require('express'), Challenge = require('./../../models/Challenge'), User = require('./../../models/User'), resources = require('./../resources/resources'), + userMigration = require('../resources/middleware').userMigration, MDNlinks = require('./../../seed_data/bonfireMDNlinks'); +var router = express.Router(); var challengeMapWithNames = resources.getChallengeMapWithNames(); var challengeMapWithIds = resources.getChallengeMapWithIds(); +router.get( + '/challenges/next-challenge', + userMigration, + returnNextChallenge +); + +router.get( + '/challenges/:challengeName', + userMigration, + returnIndividualChallenge +); + +router.get('/challenges/', userMigration, returnCurrentChallenge); +router.post('/completed-challenge/', completedChallenge); +router.post('/completed-zipline-or-basejump', completedZiplineOrBasejump); +router.post('/completed-bonfire', completedBonfire); + function getMDNlinks(links) { // takes in an array of links, which are strings var populatedLinks = []; @@ -53,7 +73,7 @@ function getMDNlinks(links) { return populatedLinks; } -exports.returnNextChallenge = function(req, res, next) { +function returnNextChallenge(req, res, next) { if (!req.user) { return res.redirect('../challenges/learn-how-free-code-camp-works'); } @@ -105,9 +125,9 @@ exports.returnNextChallenge = function(req, res, next) { } return res.redirect('../challenges/' + nameString); }); -}; +} -exports.returnCurrentChallenge = function(req, res, next) { +function returnCurrentChallenge(req, res, next) { if (!req.user) { return res.redirect('../challenges/learn-how-free-code-camp-works'); } @@ -142,9 +162,9 @@ exports.returnCurrentChallenge = function(req, res, next) { } return res.redirect('../challenges/' + nameString); }); -}; +} -exports.returnIndividualChallenge = function(req, res, next) { +function returnIndividualChallenge(req, res, next) { var dashedName = req.params.challengeName; var challengeName = @@ -309,9 +329,9 @@ exports.returnIndividualChallenge = function(req, res, next) { return challengeType[challenge.challengeType](); } }); -}; +} -exports.completedBonfire = function (req, res, next) { +function completedBonfire(req, res, next) { var isCompletedWith = req.body.challengeInfo.completedWith || ''; var isCompletedDate = Math.round(+new Date()); var challengeId = req.body.challengeInfo.challengeId; @@ -415,9 +435,9 @@ exports.completedBonfire = function (req, res, next) { } }); } -}; +} -exports.completedChallenge = function (req, res, next) { +function completedChallenge(req, res, next) { var isCompletedDate = Math.round(+new Date()); var challengeId = req.body.challengeInfo.challengeId; @@ -445,9 +465,9 @@ exports.completedChallenge = function (req, res, next) { res.sendStatus(200); } }); -}; +} -exports.completedZiplineOrBasejump = function (req, res, next) { +function completedZiplineOrBasejump(req, res, next) { var isCompletedWith = req.body.challengeInfo.completedWith || false; var isCompletedDate = Math.round(+new Date()); @@ -556,4 +576,6 @@ exports.completedZiplineOrBasejump = function (req, res, next) { } }); } -}; +} + +module.exports = router; diff --git a/server/resources/middleware.js b/server/resources/middleware.js index 0f2766bfe2..6cc0810b6c 100644 --- a/server/resources/middleware.js +++ b/server/resources/middleware.js @@ -1,19 +1,20 @@ var R = require('ramda'); -/** +/* + * Middleware to migrate users from fragmented challenge structure to unified + * challenge structure * * @param req * @param res * @returns null - * Middleware to migrate users from fragmented challenge structure to unified - * challenge structure */ -exports.userMigration = function(req, res, next) { +exports.userMigration = function userMigration(req, res, next) { if (!req.user || req.user.completedChallenges.length !== 0) { return next(); } req.user.completedChallenges = R.filter(function (elem) { - return elem; // getting rid of undefined + // getting rid of undefined + return elem; }, R.concat( req.user.completedCoursewares, req.user.completedBonfires.map(function (bonfire) { diff --git a/server/server.js b/server/server.js index 668bb50db9..419d9344b9 100755 --- a/server/server.js +++ b/server/server.js @@ -226,32 +226,12 @@ app.use(redirectsRouter); app.use(utilityRouter); app.use(storyRouter); -/* -app.all('/account', passportConf.isAuthenticated); -app.get('/challenges/next-challenge', - userController.userMigration, - challengeController.returnNextChallenge -); -app.get( - '/challenges/:challengeName', - userController.userMigration, - challengeController.returnIndividualChallenge -); -app.get('/challenges/', - userController.userMigration, - challengeController.returnCurrentChallenge); - -// todo refactor these routes -app.post('/completed-challenge/', challengeController.completedChallenge); -app.post('/completed-zipline-or-basejump', - challengeController.completedZiplineOrBasejump); -app.post('/completed-bonfire', challengeController.completedBonfire); -*/ /** * OAuth sign-in routes. */ +app.all('/account', passportConf.isAuthenticated); var passportOptions = { successRedirect: '/', failureRedirect: '/login'