import {App} from "../Server/sifrr.server";
import {HttpRequest, HttpResponse} from "uWebSockets.js";
const register = require('prom-client').register;
const collectDefaultMetrics = require('prom-client').collectDefaultMetrics;

export class PrometheusController {
    constructor(private App: App) {
        collectDefaultMetrics({
            timeout: 10000,
            gcDurationBuckets: [0.001, 0.01, 0.1, 1, 2, 5], // These are the default buckets.
        });

        this.App.get("/metrics", this.metrics.bind(this));
    }

    private metrics(res: HttpResponse, req: HttpRequest): void {
        res.writeHeader('Content-Type', register.contentType);
        res.end(register.metrics());
    }
}