github.com/daeMOn63/bitclient@v0.0.0-20190425080230-bfee94efac35/project_repository_group_permissions.go (about)

     1  package bitclient
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  type SetRepositoryGroupPermissionRequest struct {
     8  	Name       string `url:"name"`
     9  	Permission string `url:"permission"`
    10  }
    11  
    12  func (bc *BitClient) SetRepositoryGroupPermission(projectKey string, repositorySlug string, params SetRepositoryGroupPermissionRequest) error {
    13  
    14  	_, err := bc.DoPutUrl(
    15  		fmt.Sprintf("/projects/%s/repos/%s/permissions/groups", projectKey, repositorySlug),
    16  		params,
    17  		nil,
    18  	)
    19  
    20  	return err
    21  }
    22  
    23  type UnsetRepositoryGroupPermissionRequest struct {
    24  	Name string `url:"name"`
    25  }
    26  
    27  func (bc *BitClient) UnsetRepositoryGroupPermission(projectKey string, repositorySlug string, params UnsetRepositoryGroupPermissionRequest) error {
    28  
    29  	_, err := bc.DoDeleteUrl(
    30  		fmt.Sprintf("/projects/%s/repos/%s/permissions/groups", projectKey, repositorySlug),
    31  		params,
    32  		nil,
    33  	)
    34  
    35  	return err
    36  }
    37  
    38  type GetRepositoryGroupPermissionRequest struct {
    39  	PagedRequest
    40  	Filter string
    41  }
    42  
    43  type GetRepositoryGroupPermissionResponse struct {
    44  	PagedResponse
    45  	Values []GroupPermission
    46  }
    47  
    48  func (bc *BitClient) GetRepositoryGroupPermission(projectKey string, repositorySlug string, params GetRepositoryGroupPermissionRequest) (GetRepositoryGroupPermissionResponse, error) {
    49  
    50  	response := GetRepositoryGroupPermissionResponse{}
    51  
    52  	_, err := bc.DoGet(
    53  		fmt.Sprintf("/projects/%s/repos/%s/permissions/groups", projectKey, repositorySlug),
    54  		params,
    55  		&response,
    56  	)
    57  
    58  	return response, err
    59  }
    60  
    61  func (bc *BitClient) CloneRepositoryGroupPermissions(sourceProjectKey, sourceRepositorySlug, targetProjectKey, targetRepositorySlug string) error {
    62  
    63  	response, err := bc.GetRepositoryGroupPermission(sourceProjectKey, sourceRepositorySlug, GetRepositoryGroupPermissionRequest{})
    64  	if err != nil {
    65  		return err
    66  	}
    67  
    68  	for _, permission := range response.Values {
    69  
    70  		params := SetRepositoryGroupPermissionRequest{
    71  			Name:       permission.Group.Name,
    72  			Permission: permission.Permission,
    73  		}
    74  		err := bc.SetRepositoryGroupPermission(targetProjectKey, targetRepositorySlug, params)
    75  		if err != nil {
    76  			return fmt.Errorf("error adding %s permission to group %s on %s/%s: %s", permission.Permission, permission.Group.Name, targetProjectKey, targetRepositorySlug, err)
    77  		}
    78  	}
    79  
    80  	return nil
    81  }