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  }