| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package httpTracker
- import (
- "context"
- "crypto/tls"
- "net"
- "net/http"
- "net/url"
- )
- type Client struct {
- hc *http.Client
- url_ *url.URL
- }
- type (
- ProxyFunc func(*http.Request) (*url.URL, error)
- DialContextFunc func(ctx context.Context, network, addr string) (net.Conn, error)
- )
- type NewClientOpts struct {
- Proxy ProxyFunc
- DialContext DialContextFunc
- ServerName string
- AllowKeepAlive bool
- }
- func NewClient(url_ *url.URL, opts NewClientOpts) Client {
- return Client{
- url_: url_,
- hc: &http.Client{
- Transport: &http.Transport{
- DialContext: opts.DialContext,
- Proxy: opts.Proxy,
- TLSClientConfig: &tls.Config{
- InsecureSkipVerify: true,
- ServerName: opts.ServerName,
- },
- // This is for S3 trackers that hold connections open.
- DisableKeepAlives: !opts.AllowKeepAlive,
- },
- },
- }
- }
- func (cl Client) Close() error {
- cl.hc.CloseIdleConnections()
- return nil
- }
|