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;