package server

import (
	"net/http"
	"time"

	"github.com/tidbcloud/AgentTeam/internal/apr/types"
)

type httpClientWrapper interface {
	WrapHTTPClient(client *http.Client, name string) *http.Client
}

func newOutboundHTTPClient(wrapper httpClientWrapper, name string, timeout time.Duration, transporter types.HTTPProxy) *http.Client {
	client := &http.Client{Timeout: timeout}
	if transporter != nil {
		if transport := transporter.Transport(); transport != nil {
			client.Transport = transport
		}
	}
	return wrapOutboundHTTPClient(wrapper, client, name)
}

func wrapOutboundHTTPClient(wrapper httpClientWrapper, client *http.Client, name string) *http.Client {
	if wrapper == nil {
		return client
	}
	return wrapper.WrapHTTPClient(client, name)
}
