github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/obs/client_base.go (about) 1 package obs 2 3 import ( 4 "fmt" 5 "net/http" 6 "strings" 7 ) 8 9 // ObsClient defines OBS client. 10 type ObsClient struct { 11 conf *config 12 httpClient *http.Client 13 } 14 15 // New creates a new ObsClient instance. 16 func New(ak, sk, endpoint string, configurers ...Configurer) (*ObsClient, error) { 17 conf := &config{securityProvider: &securityProvider{ak: ak, sk: sk}, endpoint: endpoint} 18 conf.maxRetryCount = -1 19 conf.maxRedirectCount = -1 20 for _, configurer := range configurers { 21 configurer(conf) 22 } 23 24 if err := conf.initConfigWithDefault(); err != nil { 25 return nil, err 26 } 27 err := conf.getTransport() 28 if err != nil { 29 return nil, err 30 } 31 32 if isWarnLogEnabled() { 33 info := make([]string, 3) 34 info[0] = fmt.Sprintf("[OBS SDK Version=%s", obs_sdk_version) 35 info[1] = fmt.Sprintf("Endpoint=%s", conf.endpoint) 36 accessMode := "Virtual Hosting" 37 if conf.pathStyle { 38 accessMode = "Path" 39 } 40 info[2] = fmt.Sprintf("Access Mode=%s]", accessMode) 41 doLog(LEVEL_WARN, strings.Join(info, "];[")) 42 } 43 doLog(LEVEL_DEBUG, "Create obsclient with config:\n%s\n", conf) 44 obsClient := &ObsClient{conf: conf, httpClient: &http.Client{Transport: conf.transport, CheckRedirect: checkRedirectFunc}} 45 return obsClient, nil 46 }