diff --git a/package-lock.json b/package-lock.json index 1f35bf3..0d0b9db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2825,6 +2825,16 @@ "vary": "~1.1.2" } }, + "express-promise-router": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/express-promise-router/-/express-promise-router-4.0.1.tgz", + "integrity": "sha512-kqan6QuMV7FdfN9b2uYpaKEJnxzfj57voI4IsMjgug5mBc6/hjuvoUT76Z/pvRqID2isl/NygTUe8S2MH2trMg==", + "requires": { + "is-promise": "^4.0.0", + "lodash.flattendeep": "^4.0.0", + "methods": "^1.0.0" + } + }, "ext": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", @@ -3743,6 +3753,11 @@ "integrity": "sha1-DFLlS8yjkbssSUsh6GJtczbG45c=", "dev": true }, + "is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, "is-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", @@ -5229,6 +5244,11 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, + "lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", diff --git a/package.json b/package.json index 3d5fc66..677aa7a 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "copy": "^0.3.2", "errorhandler": "^1.5.1", "express": "^4.17.1", + "express-promise-router": "^4.0.1", "glob": "^7.1.6", "helmet": "^3.22.0", "http-status": "^1.4.2", diff --git a/src/apps/mooc_backend/app.ts b/src/apps/mooc_backend/app.ts index 2adeb62..5eb159c 100644 --- a/src/apps/mooc_backend/app.ts +++ b/src/apps/mooc_backend/app.ts @@ -2,6 +2,7 @@ import bodyParser from 'body-parser'; import express from 'express'; import helmet from 'helmet'; import compress from 'compression'; +import Router from 'express-promise-router'; import { registerRoutes } from './routes'; import { registerSubscribers } from './subscribers'; @@ -17,7 +18,10 @@ app.use(helmet.hidePoweredBy()); app.use(helmet.frameguard({ action: 'deny' })); app.use(compress()); -registerRoutes(app); + +const router = Router(); +app.use(router); +registerRoutes(router); registerSubscribers(); export default app; diff --git a/src/apps/mooc_backend/routes/courses.route.ts b/src/apps/mooc_backend/routes/courses.route.ts index 162e639..c49fce9 100644 --- a/src/apps/mooc_backend/routes/courses.route.ts +++ b/src/apps/mooc_backend/routes/courses.route.ts @@ -1,10 +1,10 @@ -import { Express } from 'express'; +import { Router, Request, Response } from 'express'; import container from '../config/dependency-injection'; -export const register = (app: Express) => { +export const register = (router: Router) => { const coursePutController = container.get('Apps.mooc.controllers.CoursePutController'); - app.put('/courses/:id', coursePutController.run.bind(coursePutController)); + router.put('/courses/:id', (req: Request, res: Response) => coursePutController.run(req, res)); const coursesCounterGetController = container.get('Apps.mooc.controllers.CoursesCounterGetController'); - app.get('/courses-counter', coursesCounterGetController.run.bind(coursesCounterGetController)); + router.get('/courses-counter', (req: Request, res: Response) => coursesCounterGetController.run(req, res)); }; diff --git a/src/apps/mooc_backend/routes/index.ts b/src/apps/mooc_backend/routes/index.ts index 844f646..5c89ac7 100644 --- a/src/apps/mooc_backend/routes/index.ts +++ b/src/apps/mooc_backend/routes/index.ts @@ -1,12 +1,12 @@ -import { Express } from 'express'; +import { Router } from 'express'; import glob from 'glob'; -export function registerRoutes(app: Express) { +export function registerRoutes(router: Router) { const routes = glob.sync(__dirname + '/**/*.route.*'); - routes.map(route => register(route, app)); + routes.map(route => register(route, router)); } -function register(routePath: string, app: Express) { +function register(routePath: string, router: Router) { const route = require(routePath); - route.register(app); + route.register(router); } diff --git a/src/apps/mooc_backend/routes/status.route.ts b/src/apps/mooc_backend/routes/status.route.ts index e0ac7f1..c0a5b98 100644 --- a/src/apps/mooc_backend/routes/status.route.ts +++ b/src/apps/mooc_backend/routes/status.route.ts @@ -1,8 +1,8 @@ -import { Express } from 'express'; +import { Router, Request, Response } from 'express'; import container from '../config/dependency-injection'; import StatusController from '../controllers/StatusGetController'; -export const register = (app: Express) => { +export const register = (router: Router) => { const controller: StatusController = container.get('Apps.mooc.controllers.StatusGetController'); - app.get('/status', controller.run.bind(controller)); + router.get('/status', (req: Request, res: Response) => controller.run(req, res)); };