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

     1  package iampapv1
     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  //IAMPAPAPI is the IAMpapv2 client ...
    15  type IAMPAPAPI interface {
    16  	IAMPolicy() IAMPolicy
    17  	IAMService() IAMService
    18  	AuthorizationPolicies() AuthorizationPolicyRepository
    19  	V1Policy() V1PolicyRepository
    20  }
    21  
    22  //ErrCodeAPICreation ...
    23  const ErrCodeAPICreation = "APICreationError"
    24  
    25  //IamPapService holds the client
    26  type iampapService struct {
    27  	*client.Client
    28  }
    29  
    30  //New ...
    31  func New(sess *session.Session) (IAMPAPAPI, error) {
    32  	config := sess.Config.Copy()
    33  	err := config.ValidateConfigForService(bluemix.IAMPAPService)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  	if config.HTTPClient == nil {
    38  		config.HTTPClient = http.NewHTTPClient(config)
    39  	}
    40  	tokenRefreher, err := authentication.NewIAMAuthRepository(config, &rest.Client{
    41  		DefaultHeader: gohttp.Header{
    42  			"X-Original-User-Agent": []string{config.UserAgent},
    43  			"User-Agent":            []string{http.UserAgent()},
    44  		},
    45  		HTTPClient: config.HTTPClient,
    46  	})
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  	if config.IAMAccessToken == "" {
    51  		err := authentication.PopulateTokens(tokenRefreher, config)
    52  		if err != nil {
    53  			return nil, err
    54  		}
    55  	}
    56  	if config.Endpoint == nil {
    57  		ep, err := config.EndpointLocator.IAMPAPEndpoint()
    58  		if err != nil {
    59  			return nil, err
    60  		}
    61  		config.Endpoint = &ep
    62  	}
    63  	return &iampapService{
    64  		Client: client.New(config, bluemix.IAMPAPService, tokenRefreher),
    65  	}, nil
    66  }
    67  
    68  //IAMPolicy API
    69  func (a *iampapService) IAMPolicy() IAMPolicy {
    70  	return newIAMPolicyAPI(a.Client)
    71  }
    72  
    73  //IAMService API
    74  func (a *iampapService) IAMService() IAMService {
    75  	return newIAMServiceAPI(a.Client)
    76  }
    77  
    78  //AuthorizationPolicies API
    79  func (a *iampapService) AuthorizationPolicies() AuthorizationPolicyRepository {
    80  	return NewAuthorizationPolicyRepository(a.Client)
    81  }
    82  
    83  func (a *iampapService) V1Policy() V1PolicyRepository {
    84  	return NewV1PolicyRepository(a.Client)
    85  }