github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/cse/csev2/api_service.go (about)

     1  package csev2
     2  
     3  import (
     4  	gohttp "net/http"
     5  
     6  	bluemix "github.com/IBM-Cloud/bluemix-go"
     7  	"github.com/IBM-Cloud/bluemix-go/authentication"
     8  	"github.com/IBM-Cloud/bluemix-go/client"
     9  	"github.com/IBM-Cloud/bluemix-go/http"
    10  	"github.com/IBM-Cloud/bluemix-go/rest"
    11  	"github.com/IBM-Cloud/bluemix-go/session"
    12  )
    13  
    14  //const ErrCodeAPICreation = "APICreationError"
    15  
    16  type CseServiceAPI interface {
    17  	ServiceEndpoints() ServiceEndpoints
    18  }
    19  
    20  type cseService struct {
    21  	*client.Client
    22  }
    23  
    24  func New(sess *session.Session) (CseServiceAPI, error) {
    25  	config := sess.Config.Copy()
    26  	err := config.ValidateConfigForService(bluemix.CseService)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	if config.HTTPClient == nil {
    31  		config.HTTPClient = http.NewHTTPClient(config)
    32  	}
    33  	tokenRefreher, err := authentication.NewIAMAuthRepository(config, &rest.Client{
    34  		DefaultHeader: gohttp.Header{
    35  			"X-Original-User-Agent": []string{config.UserAgent},
    36  			"User-Agent":            []string{http.UserAgent()},
    37  		},
    38  		HTTPClient: config.HTTPClient,
    39  	})
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  	if config.IAMAccessToken == "" {
    44  		err := authentication.PopulateTokens(tokenRefreher, config)
    45  		if err != nil {
    46  			return nil, err
    47  		}
    48  	}
    49  	if config.Endpoint == nil {
    50  		ep, err := config.EndpointLocator.CseEndpoint()
    51  		if err != nil {
    52  			return nil, err
    53  		}
    54  		config.Endpoint = &ep
    55  	}
    56  
    57  	return &cseService{
    58  		Client: client.New(config, bluemix.CseService, tokenRefreher),
    59  	}, nil
    60  }
    61  
    62  func (c *cseService) ServiceEndpoints() ServiceEndpoints {
    63  	return newServiceEndpointsAPI(c.Client)
    64  }