github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/icd/icdv4/api_service.go (about) 1 package icdv4 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 //ErrCodeAPICreation ... 15 const ErrCodeAPICreation = "APICreationError" 16 17 //ICDServiceAPI is the Cloud Internet Services API ... 18 type ICDServiceAPI interface { 19 Cdbs() Cdbs 20 Users() Users 21 Whitelists() Whitelists 22 Groups() Groups 23 Tasks() Tasks 24 Connections() Connections 25 AutoScaling() AutoScaling 26 Configurations() Configurations 27 } 28 29 //ICDService holds the client 30 type icdService struct { 31 *client.Client 32 } 33 34 //New ... 35 func New(sess *session.Session) (ICDServiceAPI, error) { 36 config := sess.Config.Copy() 37 err := config.ValidateConfigForService(bluemix.ICDService) 38 if err != nil { 39 return nil, err 40 } 41 if config.HTTPClient == nil { 42 config.HTTPClient = http.NewHTTPClient(config) 43 } 44 tokenRefreher, err := authentication.NewIAMAuthRepository(config, &rest.Client{ 45 DefaultHeader: gohttp.Header{ 46 "X-Original-User-Agent": []string{config.UserAgent}, 47 "User-Agent": []string{http.UserAgent()}, 48 }, 49 HTTPClient: config.HTTPClient, 50 }) 51 if err != nil { 52 return nil, err 53 } 54 if config.IAMAccessToken == "" { 55 err := authentication.PopulateTokens(tokenRefreher, config) 56 if err != nil { 57 return nil, err 58 } 59 } 60 if config.Endpoint == nil { 61 ep, err := config.EndpointLocator.ICDEndpoint() 62 if err != nil { 63 return nil, err 64 } 65 config.Endpoint = &ep 66 } 67 68 return &icdService{ 69 Client: client.New(config, bluemix.ICDService, tokenRefreher), 70 }, nil 71 } 72 73 //Cdbs implements deployments API 74 func (c *icdService) Cdbs() Cdbs { 75 return newCdbAPI(c.Client) 76 } 77 78 //Users implements users API 79 func (c *icdService) Users() Users { 80 return newUsersAPI(c.Client) 81 } 82 func (c *icdService) Configurations() Configurations { 83 return newConfigurationsAPI(c.Client) 84 } 85 86 //Whilelists implements whitelists API 87 func (c *icdService) Whitelists() Whitelists { 88 return newWhitelistAPI(c.Client) 89 } 90 91 //Groups implements groups API 92 func (c *icdService) Groups() Groups { 93 return newGroupAPI(c.Client) 94 } 95 96 //Tasks implements tasks API 97 func (c *icdService) Tasks() Tasks { 98 return newTaskAPI(c.Client) 99 } 100 101 //Tasks implements tasks API 102 func (c *icdService) Connections() Connections { 103 return newConnectionAPI(c.Client) 104 } 105 106 //AutoScaling implements AutoScaling API 107 func (c *icdService) AutoScaling() AutoScaling { 108 return newAutoScalingAPI(c.Client) 109 }