Skip to content

Commit

Permalink
fix(refactor): patching helpers.tryRoute for API routes, some re-org
Browse files Browse the repository at this point in the history
Thanks @barisusakli for the tip
  • Loading branch information
julianlam committed Oct 8, 2020
1 parent d8879d2 commit d15d9e4
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 14 deletions.
2 changes: 2 additions & 0 deletions src/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ Controllers['404'] = require('./404');
Controllers.errors = require('./errors');
Controllers.composer = require('./composer');

Controllers.write = require('./write');

Controllers.reset = function (req, res, next) {
if (meta.config['password:disableEdit']) {
return helpers.notAllowed(req, res);
Expand Down
5 changes: 5 additions & 0 deletions src/controllers/write/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
'use strict';

const Write = module.exports;

Write.users = require('./users');
11 changes: 11 additions & 0 deletions src/controllers/write/users.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
'use strict';

const users = require('../../user');
const helpers = require('../helpers');

const Users = module.exports;

Users.create = async (req, res) => {
const uid = await users.create(req.body);
helpers.formatApiResponse(200, res, await users.getUserData(uid));
};
13 changes: 12 additions & 1 deletion src/routes/helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,23 @@ helpers.setupAdminPageRoute = function (router, name, middleware, middlewares, c
router.get('/api' + name, middlewares, helpers.tryRoute(controller));
};

helpers.tryRoute = function (controller) {
helpers.setupApiRoute = function (router, name, middleware, middlewares, verb, controller) {
router[verb](name, middleware.authenticate, middlewares, helpers.tryRoute(controller, (err, res) => {
helpers.formatApiResponse(400, res, err);
}));
};

helpers.tryRoute = function (controller, handler) {
// `handler` is optional
if (controller && controller.constructor && controller.constructor.name === 'AsyncFunction') {
return async function (req, res, next) {
try {
await controller(req, res, next);
} catch (err) {
if (handler) {
return handler(err, res);
}

next(err);
}
};
Expand Down
19 changes: 6 additions & 13 deletions src/routes/write/users.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
'use strict';

const users = require('../../user');

const middleware = require('../../middleware');
const helpers = require('../../controllers/helpers');
const controllers = require('../../controllers');
const routeHelpers = require('../../routes/helpers');
// Messaging = require.main.require('./src/messaging'),
// apiMiddleware = require('./middleware'),
// errorHandler = require('../../lib/errorHandler'),
Expand All @@ -13,16 +12,10 @@ const helpers = require('../../controllers/helpers');


module.exports = function () {
var app = require('express').Router();
const router = require('express').Router();
const setupApiRoute = routeHelpers.setupApiRoute;

app.post('/', middleware.checkRequired.bind(null, ['username']), middleware.authenticate, middleware.isAdmin, async (req, res) => {
try {
const uid = await users.create(req.body);
helpers.formatApiResponse(200, res, await users.getUserData(uid));
} catch (err) {
helpers.formatApiResponse(400, res, err);
}
});
setupApiRoute(router, '/', middleware, [middleware.checkRequired.bind(null, ['username']), middleware.isAdmin], 'post', controllers.write.users.create);

// app.route('/:uid')
// .put(apiMiddleware.requireUser, apiMiddleware.exposeAdmin, function(req, res) {
Expand Down Expand Up @@ -170,5 +163,5 @@ module.exports = function () {
// });
// });

return app;
return router;
};

0 comments on commit d15d9e4

Please sign in to comment.