diff --git a/src/app.ts b/src/app.ts index 724f26e..c6af3a4 100644 --- a/src/app.ts +++ b/src/app.ts @@ -81,13 +81,15 @@ export function createServer(callback: () => void): Server { // Set production mode app.set("env", config.mode || "production"); - setupRoutes(router); + const server = app.listen(config.port, callback); - return app.listen(config.port, callback); + setupRoutes(router, server); + + return server; } /* eslint-disable @typescript-eslint/no-misused-promises */ -function setupRoutes(router: Router) { +function setupRoutes(router: Router, server: Server) { // Rate limit endpoint lists const voteEndpoints: RequestHandler[] = [voteOnSponsorTime]; const viewEndpoints: RequestHandler[] = [viewedVideoSponsorTime]; @@ -200,8 +202,8 @@ function setupRoutes(router: Router) { router.get("/api/chapterNames", getChapterNames); // get status - router.get("/api/status/:value", getStatus); - router.get("/api/status", getStatus); + router.get("/api/status/:value", (req, res) => getStatus(req, res, server)); + router.get("/api/status", (req, res) => getStatus(req, res, server)); router.get("/api/youtubeApiProxy", youtubeApiProxy); // get user category stats diff --git a/src/routes/getStatus.ts b/src/routes/getStatus.ts index 9b553b8..e9bc940 100644 --- a/src/routes/getStatus.ts +++ b/src/routes/getStatus.ts @@ -5,8 +5,9 @@ import os from "os"; import redis, { getRedisStats } from "../utils/redis"; import { promiseOrTimeout } from "../utils/promise"; import { Postgres } from "../databases/Postgres"; +import { Server } from "http"; -export async function getStatus(req: Request, res: Response): Promise { +export async function getStatus(req: Request, res: Response, server: Server): Promise { const startTime = Date.now(); let value = req.params.value as string[] | string; value = Array.isArray(value) ? value[0] : value; @@ -42,6 +43,7 @@ export async function getStatus(req: Request, res: Response): Promise processTime, redisProcessTime, loadavg: os.loadavg().slice(1), // only return 5 & 15 minute load average + connections: await new Promise((resolve) => server.getConnections((_, count) => resolve(count))), statusRequests, hostname: os.hostname(), postgresStats: (db as Postgres)?.getStats?.(),