Ghost/core/server/services/routing/registry.js

70 lines
1.5 KiB
JavaScript

const _ = require('lodash');
let routes = [];
let routers = {};
module.exports = {
setRoute(routerName, route) {
routes.push({route: route, from: routerName});
},
setRouter(name, router) {
routers[name] = router;
},
getAllRoutes() {
return _.cloneDeep(routes);
},
getRouter(name) {
return routers[name];
},
/**
* https://github.com/TryGhost/Team/issues/65#issuecomment-393622816
*
* Hierarchy for primary rss url:
*
* - index collection (/)
* - if you only have one collection, we take this rss url
*/
getRssUrl(options) {
let rssUrl = null;
const collectionIndexRouter = _.find(routers, {name: 'CollectionRouter', routerName: 'index'});
if (collectionIndexRouter) {
rssUrl = collectionIndexRouter.getRssUrl(options);
// CASE: is rss enabled?
if (rssUrl) {
return rssUrl;
}
}
const collectionRouters = _.filter(routers, {name: 'CollectionRouter'});
if (collectionRouters && collectionRouters.length === 1) {
rssUrl = collectionRouters[0].getRssUrl(options);
// CASE: is rss enabled?
if (rssUrl) {
return rssUrl;
}
}
return rssUrl;
},
resetAllRoutes() {
routes = [];
},
resetAllRouters() {
_.each(routers, (value) => {
value.reset();
});
routers = {};
}
};