3 |
import express, { Express, Router as ExpressRouter } from 'express'; |
import express, { Express, Router as ExpressRouter } from 'express'; |
4 |
import Router from "./Router"; |
import Router from "./Router"; |
5 |
import path from "path"; |
import path from "path"; |
6 |
|
import rateLimit from 'express-rate-limit'; |
7 |
|
|
8 |
export interface ServerOptions { |
export interface ServerOptions { |
9 |
port?: number; |
port?: number; |
25 |
type methods = 'get' | 'post' | 'put' | 'patch' | 'delete'; |
type methods = 'get' | 'post' | 'put' | 'patch' | 'delete'; |
26 |
const expressRouter = ExpressRouter(); |
const expressRouter = ExpressRouter(); |
27 |
|
|
28 |
|
expressRouter.use(rateLimit({ |
29 |
|
windowMs: 1 * 60 * 1000, |
30 |
|
max: 50, |
31 |
|
standardHeaders: true, |
32 |
|
legacyHeaders: true, |
33 |
|
message: { code: 429, error: 'Too many requests at a time. Please try again later.' }, |
34 |
|
})); |
35 |
|
|
36 |
|
expressRouter.use(express.json()); |
37 |
|
expressRouter.use(express.urlencoded({ extended: true })); |
38 |
|
|
39 |
await this.router.loadRoutes(); |
await this.router.loadRoutes(); |
40 |
|
|
41 |
for (const route of this.router.routes) { |
for (const route of this.router.routes) { |
42 |
expressRouter[route.method.toLowerCase() as methods](route.path, ...route.middlewareList, route.getCallbackFunction()); |
console.log(route.callback[1], route.callback[0].middleware()[route.callback[1]]); |
43 |
|
expressRouter[route.method.toLowerCase() as methods](route.path, ...(route.callback[0].middleware()[route.callback[1]] as any[] ?? []), ...route.middlewareList as any[], await route.getCallbackFunction()); |
44 |
} |
} |
45 |
|
|
46 |
this.express.use(expressRouter); |
this.express.use(expressRouter); |