1package main 2 3import ( 4 "net" 5 "net/http" 6 "time" 7) 8 9// NewClient creates a new HTTP Client using the ClientConfig values. 10func NewClient(cfg ClientConfig) *http.Client { 11 tr := &http.Transport{ 12 Proxy: http.ProxyFromEnvironment, 13 DialContext: (&net.Dialer{ 14 Timeout: cfg.Timeouts.Connect, 15 KeepAlive: 30 * time.Second, 16 DualStack: true, 17 }).DialContext, 18 MaxIdleConns: 100, 19 IdleConnTimeout: cfg.Timeouts.IdleConnection, 20 21 DisableKeepAlives: !cfg.KeepAlive, 22 TLSHandshakeTimeout: cfg.Timeouts.TLSHandshake, 23 ExpectContinueTimeout: cfg.Timeouts.ExpectContinue, 24 ResponseHeaderTimeout: cfg.Timeouts.ResponseHeader, 25 } 26 27 return &http.Client{ 28 Transport: tr, 29 } 30} 31