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 }