github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/iamuum/iamuumv2/api_service.go (about) 1 package iamuumv2 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 //IAMUUMServiceAPIv2 is the resource client ... 15 type IAMUUMServiceAPIv2 interface { 16 AccessGroup() AccessGroupRepository 17 AccessGroupMember() AccessGroupMemberRepositoryV2 18 DynamicRule() DynamicRuleRepository 19 } 20 21 //ErrCodeAPICreation ... 22 const ErrCodeAPICreation = "APICreationError" 23 24 //iamService holds the client 25 type iamuumService struct { 26 *client.Client 27 } 28 29 //New ... 30 func New(sess *session.Session) (IAMUUMServiceAPIv2, error) { 31 config := sess.Config.Copy() 32 err := config.ValidateConfigForService(bluemix.IAMUUMServicev2) 33 if err != nil { 34 return nil, err 35 } 36 if config.HTTPClient == nil { 37 config.HTTPClient = http.NewHTTPClient(config) 38 } 39 tokenRefreher, err := authentication.NewIAMAuthRepository(config, &rest.Client{ 40 DefaultHeader: gohttp.Header{ 41 "X-Original-User-Agent": []string{config.UserAgent}, 42 "User-Agent": []string{http.UserAgent()}, 43 }, 44 HTTPClient: config.HTTPClient, 45 }) 46 if err != nil { 47 return nil, err 48 } 49 if config.IAMAccessToken == "" { 50 err := authentication.PopulateTokens(tokenRefreher, config) 51 if err != nil { 52 return nil, err 53 } 54 } 55 if config.Endpoint == nil { 56 ep, err := config.EndpointLocator.IAMEndpoint() 57 if err != nil { 58 return nil, err 59 } 60 config.Endpoint = &ep 61 } 62 63 return &iamuumService{ 64 Client: client.New(config, bluemix.IAMUUMServicev2, tokenRefreher), 65 }, nil 66 } 67 68 //AccessGroup API 69 func (a *iamuumService) AccessGroup() AccessGroupRepository { 70 return NewAccessGroupRepository(a.Client) 71 } 72 73 // AccessGroupMember API 74 func (a *iamuumService) AccessGroupMember() AccessGroupMemberRepositoryV2 { 75 return NewAccessGroupMemberRepository(a.Client) 76 } 77 78 // Dynamic Rule API 79 func (a *iamuumService) DynamicRule() DynamicRuleRepository { 80 return NewDynamicRuleRepository(a.Client) 81 }