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 }