package app

import (
	"context"
	"net/http"

	"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
	"github.com/prometheus/client_golang/prometheus/promhttp"
	"google.golang.org/grpc"

	"github.com/tidbcloud/aisupport/packages/sdk-go/infra/rpcserver"
)

type metricsGatewayHandler struct{}

func NewMetricsGatewayHandler() rpcserver.GatewayHandler {
	return metricsGatewayHandler{}
}

func (metricsGatewayHandler) Name() string {
	return "MetricsHandler"
}

func (metricsGatewayHandler) RegisterGateway(
	_ context.Context,
	mux *runtime.ServeMux,
	_ *grpc.ClientConn,
) error {
	handler := promhttp.Handler()
	return mux.HandlePath(http.MethodGet, "/metrics", func(w http.ResponseWriter, r *http.Request, _ map[string]string) {
		handler.ServeHTTP(w, r)
	})
}
