41 lines
592 B
Go
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
|
|
}
|