-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
helpers.js
40 lines (33 loc) · 1.4 KB
/
helpers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
'use strict';
const helpers = module.exports;
const controllerHelpers = require('../controllers/helpers');
helpers.setupPageRoute = function (router, name, middleware, middlewares, controller) {
middlewares = [middleware.maintenanceMode, middleware.registrationComplete, middleware.pageView, middleware.pluginHooks].concat(middlewares);
router.get(name, middleware.busyCheck, middleware.applyCSRF, middleware.buildHeader, middlewares, helpers.tryRoute(controller));
router.get('/api' + name, middlewares, helpers.tryRoute(controller));
};
helpers.setupAdminPageRoute = function (router, name, middleware, middlewares, controller) {
router.get(name, middleware.admin.buildHeader, middlewares, helpers.tryRoute(controller));
router.get('/api' + name, middlewares, helpers.tryRoute(controller));
};
helpers.setupApiRoute = function (router, name, middleware, middlewares, verb, controller) {
router[verb](name, middlewares, helpers.tryRoute(controller, (err, res) => {
controllerHelpers.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);
}
};
}
return controller;
};