mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-22 18:31:57 +03:00
ab49d1eed6
no issue - jsdoc - inline comments
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
const ParentRouter = require('./ParentRouter');
|
|
const urlService = require('../url');
|
|
|
|
const controllers = require('./controllers');
|
|
const middlewares = require('./middlewares');
|
|
|
|
/**
|
|
* @description RSS Router, which should be used as a sub-router in other routes.
|
|
*
|
|
* "/rss" -> RSS Router
|
|
*/
|
|
class RSSRouter extends ParentRouter {
|
|
constructor() {
|
|
super('RSSRouter');
|
|
|
|
this.route = {value: '/rss/'};
|
|
this._registerRoutes();
|
|
}
|
|
|
|
/**
|
|
* @description Register all routes of this router.
|
|
* @private
|
|
*/
|
|
_registerRoutes() {
|
|
this.mountRoute(this.route.value, controllers.rss);
|
|
|
|
// REGISTER: pagination
|
|
this.router().param('page', middlewares.pageParam);
|
|
|
|
// REGISTER: actual rss route
|
|
this.mountRoute(urlService.utils.urlJoin(this.route.value, ':page(\\d+)'), controllers.rss);
|
|
|
|
// REGISTER: redirect rule
|
|
this.mountRoute('/feed/', this._redirectFeedRequest.bind(this));
|
|
}
|
|
|
|
/**
|
|
* @description Simple controller function to redirect /rss to /feed
|
|
* @param {Object} req
|
|
* @param {Object}res
|
|
* @private
|
|
*/
|
|
_redirectFeedRequest(req, res) {
|
|
urlService
|
|
.utils
|
|
.redirect301(
|
|
res,
|
|
urlService.utils.urlJoin(urlService.utils.getSubdir(), req.baseUrl, this.route.value)
|
|
);
|
|
}
|
|
}
|
|
|
|
module.exports = RSSRouter;
|