github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/api/cloudcontroller/ccv3/user.go (about) 1 package ccv3 2 3 import ( 4 "bytes" 5 "encoding/json" 6 7 "code.cloudfoundry.org/cli/api/cloudcontroller" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/internal" 10 ) 11 12 // User represents a Cloud Controller User. 13 type User struct { 14 // GUID is the unique user identifier. 15 GUID string `json:"guid"` 16 Username string `json:"username"` 17 PresentationName string `json:"presentation_name"` 18 Origin string `json:"origin"` 19 } 20 21 // CreateUser creates a new Cloud Controller User from the provided UAA user 22 // ID. 23 func (client *Client) CreateUser(uaaUserID string) (User, Warnings, error) { 24 type userRequestBody struct { 25 GUID string `json:"guid"` 26 } 27 28 bodyBytes, err := json.Marshal(userRequestBody{ 29 GUID: uaaUserID, 30 }) 31 if err != nil { 32 return User{}, nil, err 33 } 34 35 request, err := client.newHTTPRequest(requestOptions{ 36 RequestName: internal.PostUserRequest, 37 Body: bytes.NewReader(bodyBytes), 38 }) 39 if err != nil { 40 return User{}, nil, err 41 } 42 43 var user User 44 response := cloudcontroller.Response{ 45 DecodeJSONResponseInto: &user, 46 } 47 48 err = client.connection.Make(request, &response) 49 50 return user, response.Warnings, err 51 } 52 53 func (client *Client) DeleteUser(uaaUserID string) (JobURL, Warnings, error) { 54 request, err := client.newHTTPRequest(requestOptions{ 55 RequestName: internal.DeleteUserRequest, 56 URIParams: internal.Params{ 57 "user_guid": uaaUserID, 58 }, 59 }) 60 61 if err != nil { 62 return JobURL(""), nil, err 63 } 64 65 response := cloudcontroller.Response{} 66 67 err = client.connection.Make(request, &response) 68 69 return JobURL(response.ResourceLocationURL), response.Warnings, err 70 } 71 72 func (client *Client) GetUser(userGUID string) (User, Warnings, error) { 73 request, err := client.newHTTPRequest(requestOptions{ 74 RequestName: internal.GetUserRequest, 75 URIParams: map[string]string{"user_guid": userGUID}, 76 }) 77 if err != nil { 78 return User{}, nil, err 79 } 80 81 var responseUser User 82 response := cloudcontroller.Response{ 83 DecodeJSONResponseInto: &responseUser, 84 } 85 err = client.connection.Make(request, &response) 86 87 return responseUser, response.Warnings, err 88 } 89 90 func (client *Client) GetUsers(query ...Query) ([]User, Warnings, error) { 91 request, err := client.newHTTPRequest(requestOptions{ 92 RequestName: internal.GetUsersRequest, 93 Query: query, 94 }) 95 if err != nil { 96 return nil, nil, err 97 } 98 99 var usersList []User 100 warnings, err := client.paginate(request, User{}, func(item interface{}) error { 101 if user, ok := item.(User); ok { 102 usersList = append(usersList, user) 103 } else { 104 return ccerror.UnknownObjectInListError{ 105 Expected: User{}, 106 Unexpected: item, 107 } 108 } 109 return nil 110 }) 111 112 return usersList, warnings, err 113 }