in oss/client.go [162:210]
func resolveHTTPClient(cfg *Config, o *Options, inner *innerOptions) {
if o.HttpClient != nil {
return
}
//config in http.Transport
custom := []func(*http.Transport){}
if cfg.InsecureSkipVerify != nil {
custom = append(custom, transport.InsecureSkipVerify(*cfg.InsecureSkipVerify))
}
if cfg.ProxyFromEnvironment != nil && *cfg.ProxyFromEnvironment {
custom = append(custom, transport.ProxyFromEnvironment())
}
if cfg.ProxyHost != nil {
if url, err := url.Parse(*cfg.ProxyHost); err == nil {
custom = append(custom, transport.HttpProxy(url))
}
}
//config in transport package
tcfg := &transport.Config{}
if cfg.ConnectTimeout != nil {
tcfg.ConnectTimeout = cfg.ConnectTimeout
}
if cfg.ReadWriteTimeout != nil {
tcfg.ReadWriteTimeout = cfg.ReadWriteTimeout
}
if cfg.EnabledRedirect != nil {
tcfg.EnabledRedirect = cfg.EnabledRedirect
}
if cfg.UploadBandwidthlimit != nil {
value := *cfg.UploadBandwidthlimit * 1024
tb := newBwTokenBucket(value)
tcfg.PostWrite = append(tcfg.PostWrite, func(n int, _ error) {
tb.LimitBandwidth(n)
})
inner.BwTokenBuckets[BwTokenBucketSlotTx] = tb
}
if cfg.DownloadBandwidthlimit != nil {
value := *cfg.DownloadBandwidthlimit * 1024
tb := newBwTokenBucket(value)
tcfg.PostRead = append(tcfg.PostRead, func(n int, _ error) {
tb.LimitBandwidth(n)
})
inner.BwTokenBuckets[BwTokenBucketSlotRx] = tb
}
o.HttpClient = transport.NewHttpClient(tcfg, custom...)
}