From fc73fc7f8c1a9ebb3c8016dc9df1e8361add00fe Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Sun, 3 Apr 2016 14:23:50 +0200 Subject: [PATCH] v3: start adapting v2 --- website/src/controllers/api-v2/dataexport.js | 14 +++++----- website/src/controllers/api-v2/user.js | 27 ++++++++++--------- .../src/middlewares/api-v2/errorHandler.js | 3 ++- website/src/middlewares/api-v3/v2.js | 16 +++++------ website/src/routes/api-v2/auth.js | 18 ++++++------- website/src/routes/api-v2/coupon.js | 6 ++--- website/src/routes/api-v2/swagger.js | 2 +- website/src/routes/dataexport.js | 1 - 8 files changed, 43 insertions(+), 44 deletions(-) diff --git a/website/src/controllers/api-v2/dataexport.js b/website/src/controllers/api-v2/dataexport.js index 8c16b9864f..681749bd16 100644 --- a/website/src/controllers/api-v2/dataexport.js +++ b/website/src/controllers/api-v2/dataexport.js @@ -5,15 +5,15 @@ var nconf = require('nconf'); var moment = require('moment'); var js2xmlparser = require("js2xmlparser"); var pd = require('pretty-data').pd; -var User = require('../models/user').model; +var User = require('../../models/user').model; // Avatar screenshot/static-page includes -var Pageres = require('pageres'); //https://github.com/sindresorhus/pageres -var AWS = require('aws-sdk'); -AWS.config.update({accessKeyId: nconf.get("S3:accessKeyId"), secretAccessKey: nconf.get("S3:secretAccessKey")}); -var s3Stream = require('s3-upload-stream')(new AWS.S3()); //https://github.com/nathanpeck/s3-upload-stream -var bucket = nconf.get("S3:bucket"); -var request = require('request'); +//var Pageres = require('pageres'); //https://github.com/sindresorhus/pageres +//var AWS = require('aws-sdk'); +//AWS.config.update({accessKeyId: nconf.get("S3:accessKeyId"), secretAccessKey: nconf.get("S3:secretAccessKey")}); +//var s3Stream = require('s3-upload-stream')(new AWS.S3()); //https://github.com/nathanpeck/s3-upload-stream +//var bucket = nconf.get("S3:bucket"); +//var request = require('request'); /* ------------------------------------------------------------------------ diff --git a/website/src/controllers/api-v2/user.js b/website/src/controllers/api-v2/user.js index 76763544d9..34cde91d69 100644 --- a/website/src/controllers/api-v2/user.js +++ b/website/src/controllers/api-v2/user.js @@ -590,21 +590,22 @@ api.sessionPartyInvite = function(req,res,next){ /** * All other user.ops which can easily be mapped to common/script/index.js, not requiring custom API-wrapping */ -_.each(shared.wrap({}).ops, function(op,k){ +_.each(shared.ops, function(op,k){ if (!api[k]) { api[k] = function(req, res, next) { - res.locals.user.ops[k](req,function(err, response){ - // If we want to send something other than 500, pass err as {code: 200, message: "Not enough GP"} - if (err) { - if (!err.code) return next(err); - if (err.code >= 400) return res.status(err.code).json({err:err.message}); - // In the case of 200s, they're friendly alert messages like "You're pet has hatched!" - still send the op - } - res.locals.user.save(function(err){ - if (err) return next(err); - res.status(200).json(response); - }) - }, analytics); + var opResponse; + try { + opResponse = shared.ops[k](res.locals.user, req, analytics); + } catch (err) { + if (!err.code) return next(err); + if (err.code >= 400) return res.status(err.code).json({err:err.message}); + } + + // If we want to send something other than 500, pass err as {code: 200, message: "Not enough GP"} + res.locals.user.save(function(err){ + if (err) return next(err); + res.status(200).json(response); + }) } } }) diff --git a/website/src/middlewares/api-v2/errorHandler.js b/website/src/middlewares/api-v2/errorHandler.js index 15ac67aed6..6fcbd6a307 100644 --- a/website/src/middlewares/api-v2/errorHandler.js +++ b/website/src/middlewares/api-v2/errorHandler.js @@ -1,6 +1,7 @@ -var logging = require('../libs/api-v2/logging'); +var logging = require('../../libs/api-v2/logging'); module.exports = function(err, req, res, next) { + console.log(err, 'HEEEERE'); //res.locals.domain.emit('error', err); // when we hit an error, send it to admin as an email. If no ADMIN_EMAIL is present, just send it to yourself (SMTP_USER) var stack = (err.stack ? err.stack : err.message ? err.message : err) + diff --git a/website/src/middlewares/api-v3/v2.js b/website/src/middlewares/api-v3/v2.js index 822927b119..f942c4f673 100644 --- a/website/src/middlewares/api-v3/v2.js +++ b/website/src/middlewares/api-v3/v2.js @@ -1,7 +1,7 @@ // DEPRECATED BUT STILL ACTIVE // import path from 'path'; -// import swagger from 'swagger-node-express'; +import swagger from 'swagger-node-express'; // import shared from '../../../../common'; import express from 'express'; @@ -12,15 +12,13 @@ v2app.set('view engine', 'jade'); v2app.set('views', `${__dirname}/../../../views`); // Custom Directives -// v2app.use('/', require('../../routes/api-v2/auth')); -// v2app.use('/', require('../../routes/api-v2/coupon')); -// v2app.use('/', require('../../routes/api-v2/unsubscription')); +v2app.use('/', require('../../routes/api-v2/auth')); +v2app.use('/', require('../../routes/api-v2/coupon')); // TODO REMOVE - ONLY v3 +v2app.use('/', require('../../routes/api-v2/unsubscription')); // TODO REMOVE - ONLY v3 -// const v2routes = express(); -// v2app.use('/api/v2', v2routes); -// v2app.use('/export', require('../../routes/dataexport')); -// require('../../routes/api-v2/swagger')(swagger, v2); +v2app.use('/export', require('../../routes/dataexport')); // TODO REMOVE - ONLY v3 +require('../../routes/api-v2/swagger')(swagger, v2app); -// v2app.use(require('../api-v2/errorHandler')); +v2app.use(require('../api-v2/errorHandler')); module.exports = v2app; diff --git a/website/src/routes/api-v2/auth.js b/website/src/routes/api-v2/auth.js index d3e07bcea5..9abf10d9c4 100644 --- a/website/src/routes/api-v2/auth.js +++ b/website/src/routes/api-v2/auth.js @@ -5,14 +5,14 @@ var router = express.Router(); /* auth.auth*/ auth.setupPassport(router); //FIXME make this consistent with the others -router.post('/api/v2/register', i18n.getUserLanguage, auth.registerUser); -router.post('/api/v2/user/auth/local', i18n.getUserLanguage, auth.loginLocal); -router.post('/api/v2/user/auth/social', i18n.getUserLanguage, auth.loginSocial); -router.delete('/api/v2/user/auth/social', i18n.getUserLanguage, auth.auth, auth.deleteSocial); -router.post('/api/v2/user/reset-password', i18n.getUserLanguage, auth.resetPassword); -router.post('/api/v2/user/change-password', i18n.getUserLanguage, auth.auth, auth.changePassword); -router.post('/api/v2/user/change-username', i18n.getUserLanguage, auth.auth, auth.changeUsername); -router.post('/api/v2/user/change-email', i18n.getUserLanguage, auth.auth, auth.changeEmail); -router.post('/api/v2/user/auth/firebase', i18n.getUserLanguage, auth.auth, auth.getFirebaseToken); +router.post('/register', i18n.getUserLanguage, auth.registerUser); +router.post('/user/auth/local', i18n.getUserLanguage, auth.loginLocal); +router.post('/user/auth/social', i18n.getUserLanguage, auth.loginSocial); +router.delete('/user/auth/social', i18n.getUserLanguage, auth.auth, auth.deleteSocial); +router.post('/user/reset-password', i18n.getUserLanguage, auth.resetPassword); +router.post('/user/change-password', i18n.getUserLanguage, auth.auth, auth.changePassword); +router.post('/user/change-username', i18n.getUserLanguage, auth.auth, auth.changeUsername); +router.post('/user/change-email', i18n.getUserLanguage, auth.auth, auth.changeEmail); +router.post('/user/auth/firebase', i18n.getUserLanguage, auth.auth, auth.getFirebaseToken); module.exports = router; diff --git a/website/src/routes/api-v2/coupon.js b/website/src/routes/api-v2/coupon.js index 7660a14beb..10c6ece15a 100644 --- a/website/src/routes/api-v2/coupon.js +++ b/website/src/routes/api-v2/coupon.js @@ -5,8 +5,8 @@ var auth = require('../../controllers/api-v2/auth'); var coupon = require('../../controllers/api-v2/coupon'); var i18n = require('../../libs/api-v2/i18n'); -router.get('/api/v2/coupons', auth.authWithUrl, i18n.getUserLanguage, coupon.ensureAdmin, coupon.getCoupons); -router.post('/api/v2/coupons/generate/:event', auth.auth, i18n.getUserLanguage, coupon.ensureAdmin, coupon.generateCoupons); -router.post('/api/v2/user/coupon/:code', auth.auth, i18n.getUserLanguage, coupon.enterCode); +router.get('/coupons', auth.authWithUrl, i18n.getUserLanguage, coupon.ensureAdmin, coupon.getCoupons); +router.post('/coupons/generate/:event', auth.auth, i18n.getUserLanguage, coupon.ensureAdmin, coupon.generateCoupons); +router.post('/user/coupon/:code', auth.auth, i18n.getUserLanguage, coupon.enterCode); module.exports = router; diff --git a/website/src/routes/api-v2/swagger.js b/website/src/routes/api-v2/swagger.js index f167884245..fc94bdd9ed 100644 --- a/website/src/routes/api-v2/swagger.js +++ b/website/src/routes/api-v2/swagger.js @@ -13,7 +13,7 @@ var members = require("../../controllers/api-v2/members"); var auth = require("../../controllers/api-v2/auth"); var hall = require("../../controllers/api-v2/hall"); var challenges = require("../../controllers/api-v2/challenges"); -var dataexport = require("../../controllers/dataexport"); +var dataexport = require("../../controllers/api-v2/dataexport"); var nconf = require("nconf"); var cron = user.cron; var _ = require('lodash'); diff --git a/website/src/routes/dataexport.js b/website/src/routes/dataexport.js index dc748e547d..af06700026 100644 --- a/website/src/routes/dataexport.js +++ b/website/src/routes/dataexport.js @@ -4,7 +4,6 @@ var dataexport = require('../controllers/api-v2/dataexport'); var auth = require('../controllers/api-v2/auth'); var nconf = require('nconf'); var i18n = require('../libs/api-v2/i18n'); -var locals = require('../middlewares/locals'); const BASE_URL = nconf.get('BASE_URL');