func (o *Options) TLSConfig() *tls.Config {
	return o.tlsConfig
}
TLSConfig returns tls.Config
package http
import (
	"crypto/tls"
	"net"
	"net/http"
	"time"
)
type Options struct {
	httpClient *http.Client
	doer Doer
	ownClient bool
	tlsConfig *tls.Config
	httpRequestTimeout uint
}
func (o *Options) HTTPClient() *http.Client {
	if o.doer != nil {
		panic("HTTPClient called after SetHTTPDoer")
	}
	if o.httpClient == nil {
		o.httpClient = &http.Client{
			Timeout: time.Second * time.Duration(o.HTTPRequestTimeout()),
			Transport: &http.Transport{
				DialContext: (&net.Dialer{
					Timeout: 5 * time.Second,
				}).DialContext,
				TLSHandshakeTimeout: 5 * time.Second,
				TLSClientConfig:     o.TLSConfig(),
				MaxIdleConns:        100,
				MaxIdleConnsPerHost: 100,
				IdleConnTimeout:     90 * time.Second,
			},
		}
		o.ownClient = true
	}
	return o.httpClient
}
func (o *Options) SetHTTPClient(c *http.Client) *Options {
	o.httpClient = c
	o.ownClient = false
	return o
}
func (o *Options) OwnHTTPClient() bool {
	return o.ownClient
}
type Doer interface {
	Do(*http.Request) (*http.Response, error)
}
func (o *Options) SetHTTPDoer(d Doer) *Options {
	if d != nil {
		o.doer = d
		o.ownClient = false
	}
	return o
}
func (o *Options) HTTPDoer() Doer {
	if o.doer != nil {
		return o.doer
	}
	return o.HTTPClient()
}