feat(server): remove the use of "any" for metrics endpoint

This commit is contained in:
perf3ct 2025-05-26 20:26:03 +00:00
parent 52fb5fa298
commit 758b22e6b1
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
2 changed files with 10 additions and 6 deletions

View File

@ -1,4 +1,4 @@
import type { Router } from "express"; import type { Router, Request, Response, NextFunction } from "express";
import eu from "./etapi_utils.js"; import eu from "./etapi_utils.js";
import sql from "../services/sql.js"; import sql from "../services/sql.js";
import appInfo from "../services/app_info.js"; import appInfo from "../services/app_info.js";
@ -238,8 +238,8 @@ function collectMetrics(): MetricsData {
}; };
} }
function register(router: Router) { function register(router: Router): void {
eu.route(router, "get", "/etapi/metrics", (req, res, next) => { eu.route(router, "get", "/etapi/metrics", (req: Request, res: Response, next: NextFunction) => {
try { try {
const metrics = collectMetrics(); const metrics = collectMetrics();
const format = (req.query.format as string)?.toLowerCase() || 'prometheus'; const format = (req.query.format as string)?.toLowerCase() || 'prometheus';
@ -254,8 +254,9 @@ function register(router: Router) {
} else { } else {
throw new eu.EtapiError(400, "INVALID_FORMAT", "Supported formats: 'prometheus' (default), 'json'"); throw new eu.EtapiError(400, "INVALID_FORMAT", "Supported formats: 'prometheus' (default), 'json'");
} }
} catch (error: any) { } catch (error: unknown) {
throw new eu.EtapiError(500, "METRICS_ERROR", `Failed to collect metrics: ${error.message}`); const errorMessage = error instanceof Error ? error.message : 'Unknown error';
throw new eu.EtapiError(500, "METRICS_ERROR", `Failed to collect metrics: ${errorMessage}`);
} }
}); });
} }

View File

@ -1,5 +1,8 @@
import type { Request, Response } from "express";
import etapiMetrics from "../../etapi/metrics.js"; import etapiMetrics from "../../etapi/metrics.js";
type MetricsData = ReturnType<typeof etapiMetrics.collectMetrics>;
/** /**
* @swagger * @swagger
* /api/metrics: * /api/metrics:
@ -148,7 +151,7 @@ import etapiMetrics from "../../etapi/metrics.js";
* security: * security:
* - session: [] * - session: []
*/ */
function getMetrics(req: any, res: any): any { function getMetrics(req: Request, res: Response): string | MetricsData {
const format = (req.query?.format as string)?.toLowerCase() || 'prometheus'; const format = (req.query?.format as string)?.toLowerCase() || 'prometheus';
if (format === 'json') { if (format === 'json') {