github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/usermanagement/usermanagementv2/user_invite.go (about) 1 package usermanagementv2 2 3 import ( 4 "fmt" 5 "net/http" 6 7 "github.com/IBM-Cloud/bluemix-go/client" 8 "github.com/IBM-Cloud/bluemix-go/rest" 9 ) 10 11 const ( 12 _UsersIDPath = "/v2/accounts/%s/users/%s" 13 _UsersURL = "/v2/accounts/%s/users" 14 _UserSettingsPath = "/v2/accounts/%s/users/%s/settings" 15 ) 16 17 // Users ... 18 type Users interface { 19 //GetUsers returns users in the first page alone 20 GetUsers(ibmUniqueID string) (UsersList, error) 21 //ListUsers returns all the users in the account 22 ListUsers(ibmUniqueID string) ([]UserInfo, error) 23 GetUserProfile(ibmUniqueID string, userID string) (UserInfo, error) 24 InviteUsers(ibmUniqueID string, users UserInvite) (UserInvite, error) 25 UpdateUserProfile(ibmUniqueID string, userID string, user UserInfo) error 26 RemoveUsers(ibmUniqueID string, userID string) error 27 GetUserSettings(accountID string, iamID string) (UserSettingOptions, error) 28 //Same patch request is being used to create, update and delete 29 ManageUserSettings(accountID string, iamID string, userSettings UserSettingOptions) (UserSettingOptions, error) 30 } 31 32 type inviteUsersHandler struct { 33 client *client.Client 34 } 35 36 // NewUsers 37 func NewUserInviteHandler(c *client.Client) Users { 38 return &inviteUsersHandler{ 39 client: c, 40 } 41 } 42 43 //GetUsers returns users in the first page alone 44 func (r *inviteUsersHandler) GetUsers(ibmUniqueID string) (UsersList, error) { 45 result := UsersList{} 46 URL := fmt.Sprintf(_UsersURL, ibmUniqueID) 47 resp, err := r.client.Get(URL, &result) 48 49 if resp.StatusCode == http.StatusNotFound { 50 return UsersList{}, nil 51 } 52 53 if err != nil { 54 return result, err 55 } 56 57 return result, nil 58 } 59 60 //ListUsers returns all the users in the account 61 func (r *inviteUsersHandler) ListUsers(ibmUniqueID string) ([]UserInfo, error) { 62 URL := fmt.Sprintf(_UsersURL, ibmUniqueID) 63 64 var users []UserInfo 65 _, err := r.client.GetPaginated(URL, 66 NewRCPaginatedResources(UserInfo{}), 67 func(resource interface{}) bool { 68 if user, ok := resource.(UserInfo); ok { 69 users = append(users, user) 70 return true 71 } 72 return false 73 }, 74 ) 75 if err != nil { 76 return users, err 77 } 78 return users, nil 79 } 80 81 func (r *inviteUsersHandler) GetUserProfile(ibmUniqueID string, userID string) (UserInfo, error) { 82 user := UserInfo{} 83 URL := fmt.Sprintf(_UsersIDPath, ibmUniqueID, userID) 84 _, err := r.client.Get(URL, &user) 85 if err != nil { 86 return UserInfo{}, err 87 } 88 89 return user, nil 90 } 91 92 func (r *inviteUsersHandler) InviteUsers(ibmUniqueID string, users UserInvite) (UserInvite, error) { 93 usersInvited := UserInvite{} 94 URL := fmt.Sprintf(_UsersURL, ibmUniqueID) 95 _, err := r.client.Post(URL, &users, &usersInvited) 96 if err != nil { 97 return UserInvite{}, err 98 } 99 100 return usersInvited, nil 101 } 102 103 func (r *inviteUsersHandler) UpdateUserProfile(ibmUniqueID string, userID string, user UserInfo) error { 104 URL := fmt.Sprintf(_UsersIDPath, ibmUniqueID, userID) 105 request := rest.PutRequest(*r.client.Config.Endpoint + URL) 106 request = request.Body(&user) 107 108 _, err := r.client.SendRequest(request, nil) 109 if err != nil { 110 return err 111 } 112 113 return nil 114 } 115 116 func (r *inviteUsersHandler) RemoveUsers(ibmUniqueID string, userID string) error { 117 URL := fmt.Sprintf(_UsersIDPath, ibmUniqueID, userID) 118 _, err := r.client.Delete(URL) 119 return err 120 } 121 122 func (r *inviteUsersHandler) GetUserSettings(accountID string, iamID string) (UserSettingOptions, error) { 123 settings := UserSettingOptions{} 124 URL := fmt.Sprintf(_UserSettingsPath, accountID, iamID) 125 _, err := r.client.Get(URL, &settings) 126 if err != nil { 127 return UserSettingOptions{}, err 128 } 129 130 return settings, nil 131 } 132 133 func (r *inviteUsersHandler) ManageUserSettings(accountID string, iamID string, userSettings UserSettingOptions) (UserSettingOptions, error) { 134 resp := UserSettingOptions{} 135 URL := fmt.Sprintf(_UserSettingsPath, accountID, iamID) 136 _, err := r.client.Patch(URL, &userSettings, &resp) 137 138 if err != nil { 139 return resp, err 140 } 141 142 return resp, nil 143 }