0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/core/server/services/route/base/Router.js

50 lines
1.4 KiB
JavaScript
Raw Normal View History

2017-11-01 15:55:06 +00:00
'use strict';
/**
* # Router
*
* A wrapper around express.Router
* Intended to be extended anywhere that routes need to be registered in Ghost
* Only allows for .use and .get at the moment - we don't have clear use-cases for anything else yet.
*/
2017-11-01 15:55:06 +00:00
var debug = require('ghost-ignition').debug('services:routes:ParentRouter'),
express = require('express'),
// This is a shared global cache
// @TODO expand this as part of the route service
routes = [];
/**
* We expose a very limited amount of express.Router via specialist methods
*/
class ParentRouter {
constructor(name) {
this.name = name;
this._router = express.Router({mergeParams: true});
}
mountRouter(path, router) {
if (arguments.length === 1) {
router = path;
debug(this.name + ': mountRouter: ' + router.name);
this._router.use(router);
} else {
routes.push(path);
debug(this.name + ': mountRouter: ' + router.name + ' at ' + path);
this._router.use(path, router);
}
}
mountRoute(path, controller) {
debug(this.name + ': mountRoute for', path, controller.name);
routes.push(path);
this._router.get(path, controller);
}
router() {
// @TODO: should this just be the handler that is returned?
// return this._router.handle.bind(this._router);
return this._router;
}
}
module.exports = ParentRouter;