github.com/daeMOn63/bitclient@v0.0.0-20190425080230-bfee94efac35/project_repository_user_permissions.go (about) 1 package bitclient 2 3 import ( 4 "fmt" 5 ) 6 7 type SetRepositoryUserPermissionRequest struct { 8 Username string `url:"name"` 9 Permission string `url:"permission"` 10 } 11 12 func (bc *BitClient) SetRepositoryUserPermission(projectKey string, repositorySlug string, params SetRepositoryUserPermissionRequest) error { 13 14 _, err := bc.DoPutUrl( 15 fmt.Sprintf("/projects/%s/repos/%s/permissions/users", projectKey, repositorySlug), 16 params, 17 nil, 18 ) 19 20 return err 21 } 22 23 type UnsetRepositoryUserPermissionRequest struct { 24 Username string `url:"name"` 25 } 26 27 func (bc *BitClient) UnsetRepositoryUserPermission(projectKey string, repositorySlug string, params UnsetRepositoryUserPermissionRequest) error { 28 29 _, err := bc.DoDeleteUrl( 30 fmt.Sprintf("/projects/%s/repos/%s/permissions/users", projectKey, repositorySlug), 31 params, 32 nil, 33 ) 34 35 return err 36 } 37 38 type GetRepositoryUserPermissionRequest struct { 39 PagedRequest 40 Filter string 41 } 42 43 type GetRepositoryUserPermissionResponse struct { 44 PagedResponse 45 Values []UserPermission 46 } 47 48 func (bc *BitClient) GetRepositoryUserPermission(projectKey string, repositorySlug string, params GetRepositoryUserPermissionRequest) (GetRepositoryUserPermissionResponse, error) { 49 50 response := GetRepositoryUserPermissionResponse{} 51 52 _, err := bc.DoGet( 53 fmt.Sprintf("/projects/%s/repos/%s/permissions/users", projectKey, repositorySlug), 54 params, 55 &response, 56 ) 57 58 return response, err 59 } 60 61 func (bc *BitClient) CloneRepositoryUserPermissions(sourceProjectKey, sourceRepositorySlug, targetProjectKey, targetRepositorySlug string) error { 62 63 response, err := bc.GetRepositoryUserPermission(sourceProjectKey, sourceRepositorySlug, GetRepositoryUserPermissionRequest{}) 64 if err != nil { 65 return err 66 } 67 68 for _, permission := range response.Values { 69 70 if permission.User.Active == false { 71 continue 72 } 73 74 params := SetRepositoryUserPermissionRequest{ 75 Username: permission.User.Name, 76 Permission: permission.Permission, 77 } 78 err := bc.SetRepositoryUserPermission(targetProjectKey, targetRepositorySlug, params) 79 if err != nil { 80 return fmt.Errorf("error adding %s permission to user %s on %s/%s: %s", permission.Permission, permission.User.Name, targetProjectKey, targetRepositorySlug, err) 81 } 82 } 83 84 return nil 85 }