nginx-ui/internal/transport/transport.go
2024-10-22 16:38:38 +08:00

44 lines
1 KiB
Go

package transport
import (
"crypto/tls"
"github.com/0xJacky/Nginx-UI/settings"
"net/http"
"net/url"
)
// NewTransport creates a new http.Transport with the provided options.
func NewTransport(options ...func(transport *http.Transport) error) (t *http.Transport, err error) {
t = &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{InsecureSkipVerify: settings.HTTPSettings.InsecureSkipVerify},
}
for _, option := range options {
if err := option(t); err != nil {
return nil, err
}
}
return
}
// WithProxy returns a function that sets the proxy of the http.Transport to the provided proxy URL.
func WithProxy(proxyUrl string) func(transport *http.Transport) error {
if proxyUrl == "" {
return func(transport *http.Transport) error {
return nil
}
}
proxy, err := url.Parse(proxyUrl)
if err != nil {
return func(transport *http.Transport) error {
return err
}
}
return func(transport *http.Transport) error {
transport.Proxy = http.ProxyURL(proxy)
return nil
}
}