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  }