...

Source file src/github.com/xanzy/go-gitlab/member_roles.go

Documentation: github.com/xanzy/go-gitlab

     1  package gitlab
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  )
     7  
     8  // MemberRolesService handles communication with the member roles related
     9  // methods of the GitLab API.
    10  //
    11  // GitLab API docs: https://docs.gitlab.com/ee/api/member_roles.html
    12  type MemberRolesService struct {
    13  	client *Client
    14  }
    15  
    16  // MemberRole represents a GitLab member role.
    17  //
    18  // GitLab API docs: https://docs.gitlab.com/ee/api/member_roles.html
    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  // ListMemberRoles gets a list of member roles for a specified group.
    40  //
    41  // Gitlab API docs:
    42  // https://docs.gitlab.com/ee/api/member_roles.html#list-all-member-roles-of-a-group
    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  // CreateMemberRoleOptions represents the available CreateMemberRole() options.
    65  //
    66  // GitLab API docs:
    67  // https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
    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  // CreateMemberRole creates a new member role for a specified group.
    80  //
    81  // Gitlab API docs:
    82  // https://docs.gitlab.com/ee/api/member_roles.html#add-a-member-role-to-a-group
    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  // DeleteMemberRole deletes a member role from a specified group.
   105  //
   106  // Gitlab API docs:
   107  // https://docs.gitlab.com/ee/api/member_roles.html#remove-member-role-of-a-group
   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