silentjs
Version:
NodeJS API Framework
59 lines (46 loc) • 1.72 kB
JavaScript
// VENDOR LIBS
var express = require('express');
var lodash = require('lodash');
// FRAMEWORK
var routerHelper = require('lib/router/router-helper');
var configuration = require('lib/configuration');
var Middleware = require('lib/middleware');
var Router = function () {
this.protectedRouter = express.Router();
this.unprotectedRouter = express.Router();
this.middlewares = [];
};
Router.prototype.initialize = function (controllersPath) {
this.useMiddleware(require('lib/middlewares/logger'));
this.useMiddleware(require('lib/middlewares/pre-processor'));
this.useMiddleware(require('lib/middlewares/authentication'), 'protected');
lodash.each(this.middlewares, function (middleware) {
this.useMiddleware(middleware.func, middleware.routerType);
}.bind(this));
this.useMiddleware(require('lib/middlewares/post-processor'));
routerHelper.createRoutes(this.getRouters(), controllersPath);
};
Router.prototype.addMiddleware = function (middlewareFunc, routerType) {
var middleware = {
middleware: middlewareFunc,
routerType: routerType
};
this.middlewares.push(middleware);
};
Router.prototype.useMiddleware = function (middleware, routerType) {
var routers = this.getRouters(routerType);
lodash.each(routers, function (router) {
router.use(Middleware.bind(this, middleware));
}.bind(this));
};
Router.prototype.getRouters = function (type) {
var routers = {};
if (type === 'protected' || !type) {
routers.protected = this.protectedRouter;
}
if (type === 'unprotected' || !type) {
routers.unprotected = this.unprotectedRouter;
}
return routers;
};
module.exports = Router;