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  }