package util

import (
	"crypto/tls"
	"crypto/x509"
	"log"
	"net/http"
	"time"

	"github.com/lucas-clemente/quic-go"
	"github.com/lucas-clemente/quic-go/http3"
)

var clientHTTP3 *http.Client

func GetHTTP3Client() *http.Client {
	if clientHTTP3 != nil {
		return clientHTTP3
	}

	pool, err := x509.SystemCertPool()
	if err != nil {
		log.Fatal(err)
	}

	roundTripper := &http3.RoundTripper{
		TLSClientConfig: &tls.Config{
			RootCAs:            pool,
			InsecureSkipVerify: false,
		},
		QuicConfig: &quic.Config{},
	}
	clientHTTP3 = &http.Client{
		Transport: roundTripper,
		Timeout:   time.Second * 30,
	}

	return clientHTTP3
}
