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  }