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 }