55 "net/http"
66)
77
8- // MemberRolesService handles communication with the member roles related methods of
9- // the GitLab API.
8+ // MemberRolesService handles communication with the member roles related
9+ // methods of the GitLab API.
1010//
1111// GitLab API docs: https://docs.gitlab.com/ee/api/member_roles.html
1212type MemberRolesService struct {
@@ -30,64 +30,83 @@ type MemberRole struct {
3030 ManageProjectAccessToken bool `json:"manage_project_access_token,omitempty"`
3131}
3232
33- // CreateMemberRoleOptions represents the available CreateMemberRole() options.
34- //
35- // GitLab API docs: https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
36- type CreateMemberRoleOptions struct {
37- Name string `json:"name,"`
38- BaseAccessLevel AccessLevelValue `json:"base_access_level"`
39- Description string `json:"description,omitempty"`
40- AdminMergeRequest bool `json:"admin_merge_request,omitempty"`
41- AdminVulnerability bool `json:"admin_vulnerability,omitempty"`
42- ReadCode bool `json:"read_code,omitempty"`
43- ReadDependency bool `json:"read_dependency,omitempty"`
44- ReadVulnerability bool `json:"read_vulnerability,omitempty"`
45- }
46-
4733// ListMemberRoles gets a list of member roles for a specified group.
4834//
49- // Gitlab API docs: https://docs.gitlab.com/ee/api/member_roles.html#list-all-member-roles-of-a-group
50- func ( s * MemberRolesService ) ListMemberRoles ( groupId int , options ... RequestOptionFunc ) ([] * MemberRole , * Response , error ) {
51- path := fmt . Sprintf ( "groups/%d/member_roles" , groupId )
52- req , err := s . client . NewRequest ( http . MethodGet , path , nil , options )
35+ // Gitlab API docs:
36+ // https://docs.gitlab.com/ee/api/member_roles.html#list-all-member-roles-of-a-group
37+ func ( s * MemberRolesService ) ListMemberRoles ( gid interface {}, options ... RequestOptionFunc ) ([] * MemberRole , * Response , error ) {
38+ group , err := parseID ( gid )
5339 if err != nil {
5440 return nil , nil , err
5541 }
42+ u := fmt .Sprintf ("groups/%s/member_roles" , PathEscape (group ))
5643
57- var memberRoles []* MemberRole
58- resp , err := s .client .Do (req , & memberRoles )
44+ req , err := s .client .NewRequest (http .MethodGet , u , nil , options )
45+ if err != nil {
46+ return nil , nil , err
47+ }
48+
49+ var mrs []* MemberRole
50+ resp , err := s .client .Do (req , & mrs )
5951 if err != nil {
6052 return nil , resp , err
6153 }
6254
63- return memberRoles , resp , nil
55+ return mrs , resp , nil
56+ }
57+
58+ // CreateMemberRoleOptions represents the available CreateMemberRole() options.
59+ //
60+ // GitLab API docs:
61+ // https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
62+ type CreateMemberRoleOptions struct {
63+ Name * string `url:"name,omitempty" json:"name,omitempty"`
64+ BaseAccessLevel * AccessLevelValue `url:"base_access_level,omitempty" json:"base_access_level,omitempty"`
65+ Description * string `url:"description,omitempty" json:"description,omitempty"`
66+ AdminMergeRequest * bool `url:"admin_merge_request,omitempty" json:"admin_merge_request,omitempty"`
67+ AdminVulnerability * bool `url:"admin_vulnerability,omitempty" json:"admin_vulnerability,omitempty"`
68+ ReadCode * bool `url:"read_code,omitempty" json:"read_code,omitempty"`
69+ ReadDependency * bool `url:"read_dependency,omitempty" json:"read_dependency,omitempty"`
70+ ReadVulnerability * bool `url:"read_vulnerability,omitempty" json:"read_vulnerability,omitempty"`
6471}
6572
6673// CreateMemberRole creates a new member role for a specified group.
6774//
68- // Gitlab API docs: https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
69- func ( s * MemberRolesService ) CreateMemberRole ( groupId int , opt * CreateMemberRoleOptions , options ... RequestOptionFunc ) ( * MemberRole , * Response , error ) {
70- path := fmt . Sprintf ( "groups/%d/member_roles" , groupId )
71- req , err := s . client . NewRequest ( http . MethodPost , path , opt , options )
75+ // Gitlab API docs:
76+ // https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
77+ func ( s * MemberRolesService ) CreateMemberRole ( gid interface {}, opt * CreateMemberRoleOptions , options ... RequestOptionFunc ) ( * MemberRole , * Response , error ) {
78+ group , err := parseID ( gid )
7279 if err != nil {
7380 return nil , nil , err
7481 }
82+ u := fmt .Sprintf ("groups/%s/member_roles" , PathEscape (group ))
7583
76- memberRole := new (MemberRole )
77- resp , err := s .client .Do (req , memberRole )
84+ req , err := s .client .NewRequest (http .MethodPost , u , opt , options )
85+ if err != nil {
86+ return nil , nil , err
87+ }
88+
89+ mr := new (MemberRole )
90+ resp , err := s .client .Do (req , mr )
7891 if err != nil {
7992 return nil , resp , err
8093 }
8194
82- return memberRole , resp , nil
95+ return mr , resp , nil
8396}
8497
8598// DeleteMemberRole deletes a member role from a specified group.
8699//
87- // Gitlab API docs: https://docs.gitlab.com/ee/api/member_roles.html#remove-member-role-of-a-group
88- func (s * MemberRolesService ) DeleteMemberRole (groupId , memberRoleId int , options ... RequestOptionFunc ) (* Response , error ) {
89- path := fmt .Sprintf ("groups/%d/member_roles/%d" , groupId , memberRoleId )
90- req , err := s .client .NewRequest (http .MethodDelete , path , nil , options )
100+ // Gitlab API docs:
101+ // https://docs.gitlab.com/ee/api/member_roles.html#remove-member-role-of-a-group
102+ func (s * MemberRolesService ) DeleteMemberRole (gid interface {}, memberRole int , options ... RequestOptionFunc ) (* Response , error ) {
103+ group , err := parseID (gid )
104+ if err != nil {
105+ return nil , err
106+ }
107+ u := fmt .Sprintf ("groups/%s/member_roles/%d" , PathEscape (group ), memberRole )
108+
109+ req , err := s .client .NewRequest (http .MethodDelete , u , nil , options )
91110 if err != nil {
92111 return nil , err
93112 }
0 commit comments