// Package proxy add by blacknc <blacknc@163.com> at 2024/11/22 10:25:37
package proxy

import (
	"net/http"

	"github.com/tidbcloud/tiinf/monitor/tilog"
	"go.uber.org/zap"
)

func init() {
	registerProxyRoute(proxyRoute{
		name:    "dm",
		handler: dmHandler(),
	})
}

func dmHandler() http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		ctx := req.Context()
		addr := req.Header.Get("X-DM-Addr")
		if addr == "" {
			tilog.Error(ctx, "header X-DM-Addr is required", zap.String("path", req.URL.Path))
			http.Error(w, "header X-DM-Addr is empty or missing", http.StatusBadRequest)
			return
		}

		proxy := genReverseProxy(addr)
		proxy.Transport = &http.Transport{
			DisableKeepAlives: true,
		}
		proxy.ServeHTTP(w, req)
	})
}
