Files
forge/pkg/tool/client/http.go
2025-12-31 18:58:52 +08:00

41 lines
592 B
Go

package client
import (
"crypto/tls"
"net/http"
"net/url"
)
type HttpClientOption func(*httpClientOption)
type httpClientOption struct {
SkipTLSVerify bool
Proxy string
}
func HttpClient(opts ...HttpClientOption) *http.Client {
var (
o = &httpClientOption{}
t = &http.Transport{}
)
for _, fn := range opts {
fn(o)
}
if o.SkipTLSVerify {
t.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
}
if o.Proxy != "" {
if ins, err := url.Parse(o.Proxy); err == nil {
t.Proxy = http.ProxyURL(ins)
}
}
c := &http.Client{
Transport: t,
}
return c
}