github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/icd/icdv4/user.go (about) 1 package icdv4 2 3 import ( 4 "fmt" 5 "github.com/IBM-Cloud/bluemix-go/client" 6 "github.com/IBM-Cloud/bluemix-go/utils" 7 ) 8 9 type UserReq struct { 10 User User `json:"user"` 11 } 12 13 type User struct { 14 UserName string `json:"username,omitempty"` 15 Password string `json:"password,omitempty"` 16 } 17 18 type TaskResult struct { 19 Task Task `json:"task"` 20 } 21 22 type Task struct { 23 Id string `json:"id"` 24 Description string `json:"description"` 25 Status string `json:"status"` 26 DeploymentId string `json:"deployment_id"` 27 ProgressPercent int `json:"progress_percent"` 28 CreatedAt string `json:"created_at"` 29 } 30 31 type Users interface { 32 CreateUser(icdId string, userReq UserReq) (Task, error) 33 UpdateUser(icdId string, userName string, userReq UserReq) (Task, error) 34 DeleteUser(icdId string, userName string) (Task, error) 35 } 36 37 type users struct { 38 client *client.Client 39 } 40 41 func newUsersAPI(c *client.Client) Users { 42 return &users{ 43 client: c, 44 } 45 } 46 47 func (r *users) CreateUser(icdId string, userReq UserReq) (Task, error) { 48 taskResult := TaskResult{} 49 rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/users", utils.EscapeUrlParm(icdId)) 50 _, err := r.client.Post(rawURL, &userReq, &taskResult) 51 if err != nil { 52 return taskResult.Task, err 53 } 54 return taskResult.Task, nil 55 } 56 57 func (r *users) UpdateUser(icdId string, userName string, userReq UserReq) (Task, error) { 58 taskResult := TaskResult{} 59 rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/users/%s", utils.EscapeUrlParm(icdId), userName) 60 _, err := r.client.Patch(rawURL, &userReq, &taskResult) 61 if err != nil { 62 return taskResult.Task, err 63 } 64 return taskResult.Task, nil 65 } 66 67 func (r *users) DeleteUser(icdId string, userName string) (Task, error) { 68 taskResult := TaskResult{} 69 rawURL := fmt.Sprintf("/v4/ibm/deployments/%s/users/%s", utils.EscapeUrlParm(icdId), userName) 70 _, err := r.client.DeleteWithResp(rawURL, &taskResult) 71 if err != nil { 72 return taskResult.Task, err 73 } 74 return taskResult.Task, nil 75 }