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 }