1 package gitlab
2
3 import (
4 "fmt"
5 "net/http"
6 )
7
8
9
10
11
12 type MemberRolesService struct {
13 client *Client
14 }
15
16
17
18
19 type MemberRole struct {
20 ID int `json:"id"`
21 Name string `json:"name"`
22 Description string `json:"description,omitempty"`
23 GroupId int `json:"group_id"`
24 BaseAccessLevel AccessLevelValue `json:"base_access_level"`
25 AdminCICDVariables bool `json:"admin_cicd_variables,omitempty"`
26 AdminMergeRequests bool `json:"admin_merge_request,omitempty"`
27 AdminTerraformState bool `json:"admin_terraform_state,omitempty"`
28 AdminVulnerability bool `json:"admin_vulnerability,omitempty"`
29 ReadCode bool `json:"read_code,omitempty"`
30 ReadDependency bool `json:"read_dependency,omitempty"`
31 ReadVulnerability bool `json:"read_vulnerability,omitempty"`
32 AdminGroupMembers bool `json:"admin_group_member,omitempty"`
33 ManageProjectAccessToken bool `json:"manage_project_access_tokens,omitempty"`
34 ArchiveProject bool `json:"archive_project,omitempty"`
35 RemoveProject bool `json:"remove_project,omitempty"`
36 ManageGroupAccesToken bool `json:"manage_group_access_tokens,omitempty"`
37 }
38
39
40
41
42
43 func (s *MemberRolesService) ListMemberRoles(gid interface{}, options ...RequestOptionFunc) ([]*MemberRole, *Response, error) {
44 group, err := parseID(gid)
45 if err != nil {
46 return nil, nil, err
47 }
48 u := fmt.Sprintf("groups/%s/member_roles", PathEscape(group))
49
50 req, err := s.client.NewRequest(http.MethodGet, u, nil, options)
51 if err != nil {
52 return nil, nil, err
53 }
54
55 var mrs []*MemberRole
56 resp, err := s.client.Do(req, &mrs)
57 if err != nil {
58 return nil, resp, err
59 }
60
61 return mrs, resp, nil
62 }
63
64
65
66
67
68 type CreateMemberRoleOptions struct {
69 Name *string `url:"name,omitempty" json:"name,omitempty"`
70 BaseAccessLevel *AccessLevelValue `url:"base_access_level,omitempty" json:"base_access_level,omitempty"`
71 Description *string `url:"description,omitempty" json:"description,omitempty"`
72 AdminMergeRequest *bool `url:"admin_merge_request,omitempty" json:"admin_merge_request,omitempty"`
73 AdminVulnerability *bool `url:"admin_vulnerability,omitempty" json:"admin_vulnerability,omitempty"`
74 ReadCode *bool `url:"read_code,omitempty" json:"read_code,omitempty"`
75 ReadDependency *bool `url:"read_dependency,omitempty" json:"read_dependency,omitempty"`
76 ReadVulnerability *bool `url:"read_vulnerability,omitempty" json:"read_vulnerability,omitempty"`
77 }
78
79
80
81
82
83 func (s *MemberRolesService) CreateMemberRole(gid interface{}, opt *CreateMemberRoleOptions, options ...RequestOptionFunc) (*MemberRole, *Response, error) {
84 group, err := parseID(gid)
85 if err != nil {
86 return nil, nil, err
87 }
88 u := fmt.Sprintf("groups/%s/member_roles", PathEscape(group))
89
90 req, err := s.client.NewRequest(http.MethodPost, u, opt, options)
91 if err != nil {
92 return nil, nil, err
93 }
94
95 mr := new(MemberRole)
96 resp, err := s.client.Do(req, mr)
97 if err != nil {
98 return nil, resp, err
99 }
100
101 return mr, resp, nil
102 }
103
104
105
106
107
108 func (s *MemberRolesService) DeleteMemberRole(gid interface{}, memberRole int, options ...RequestOptionFunc) (*Response, error) {
109 group, err := parseID(gid)
110 if err != nil {
111 return nil, err
112 }
113 u := fmt.Sprintf("groups/%s/member_roles/%d", PathEscape(group), memberRole)
114
115 req, err := s.client.NewRequest(http.MethodDelete, u, nil, options)
116 if err != nil {
117 return nil, err
118 }
119
120 return s.client.Do(req, nil)
121 }
122
View as plain text