...

Source file src/github.com/google/go-github/v47/github/teams_members.go

Documentation: github.com/google/go-github/v47/github

     1  // Copyright 2018 The go-github AUTHORS. All rights reserved.
     2  //
     3  // Use of this source code is governed by a BSD-style
     4  // license that can be found in the LICENSE file.
     5  
     6  package github
     7  
     8  import (
     9  	"context"
    10  	"fmt"
    11  )
    12  
    13  // TeamListTeamMembersOptions specifies the optional parameters to the
    14  // TeamsService.ListTeamMembers method.
    15  type TeamListTeamMembersOptions struct {
    16  	// Role filters members returned by their role in the team. Possible
    17  	// values are "all", "member", "maintainer". Default is "all".
    18  	Role string `url:"role,omitempty"`
    19  
    20  	ListOptions
    21  }
    22  
    23  // ListTeamMembersByID lists all of the users who are members of a team, given a specified
    24  // organization ID, by team ID.
    25  //
    26  // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members
    27  func (s *TeamsService) ListTeamMembersByID(ctx context.Context, orgID, teamID int64, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) {
    28  	u := fmt.Sprintf("organizations/%v/team/%v/members", orgID, teamID)
    29  	u, err := addOptions(u, opts)
    30  	if err != nil {
    31  		return nil, nil, err
    32  	}
    33  
    34  	req, err := s.client.NewRequest("GET", u, nil)
    35  	if err != nil {
    36  		return nil, nil, err
    37  	}
    38  
    39  	var members []*User
    40  	resp, err := s.client.Do(ctx, req, &members)
    41  	if err != nil {
    42  		return nil, resp, err
    43  	}
    44  
    45  	return members, resp, nil
    46  }
    47  
    48  // ListTeamMembersBySlug lists all of the users who are members of a team, given a specified
    49  // organization name, by team slug.
    50  //
    51  // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members
    52  func (s *TeamsService) ListTeamMembersBySlug(ctx context.Context, org, slug string, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) {
    53  	u := fmt.Sprintf("orgs/%v/teams/%v/members", org, slug)
    54  	u, err := addOptions(u, opts)
    55  	if err != nil {
    56  		return nil, nil, err
    57  	}
    58  
    59  	req, err := s.client.NewRequest("GET", u, nil)
    60  	if err != nil {
    61  		return nil, nil, err
    62  	}
    63  
    64  	var members []*User
    65  	resp, err := s.client.Do(ctx, req, &members)
    66  	if err != nil {
    67  		return nil, resp, err
    68  	}
    69  
    70  	return members, resp, nil
    71  }
    72  
    73  // GetTeamMembershipByID returns the membership status for a user in a team, given a specified
    74  // organization ID, by team ID.
    75  //
    76  // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members
    77  func (s *TeamsService) GetTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Membership, *Response, error) {
    78  	u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user)
    79  	req, err := s.client.NewRequest("GET", u, nil)
    80  	if err != nil {
    81  		return nil, nil, err
    82  	}
    83  
    84  	t := new(Membership)
    85  	resp, err := s.client.Do(ctx, req, t)
    86  	if err != nil {
    87  		return nil, resp, err
    88  	}
    89  
    90  	return t, resp, nil
    91  }
    92  
    93  // GetTeamMembershipBySlug returns the membership status for a user in a team, given a specified
    94  // organization name, by team slug.
    95  //
    96  // GitHub API docs: https://docs.github.com/en/rest/teams/members#get-team-membership-for-a-user
    97  func (s *TeamsService) GetTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Membership, *Response, error) {
    98  	u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user)
    99  	req, err := s.client.NewRequest("GET", u, nil)
   100  	if err != nil {
   101  		return nil, nil, err
   102  	}
   103  
   104  	t := new(Membership)
   105  	resp, err := s.client.Do(ctx, req, t)
   106  	if err != nil {
   107  		return nil, resp, err
   108  	}
   109  
   110  	return t, resp, nil
   111  }
   112  
   113  // TeamAddTeamMembershipOptions specifies the optional
   114  // parameters to the TeamsService.AddTeamMembership method.
   115  type TeamAddTeamMembershipOptions struct {
   116  	// Role specifies the role the user should have in the team. Possible
   117  	// values are:
   118  	//     member - a normal member of the team
   119  	//     maintainer - a team maintainer. Able to add/remove other team
   120  	//                  members, promote other team members to team
   121  	//                  maintainer, and edit the team’s name and description
   122  	//
   123  	// Default value is "member".
   124  	Role string `json:"role,omitempty"`
   125  }
   126  
   127  // AddTeamMembershipByID adds or invites a user to a team, given a specified
   128  // organization ID, by team ID.
   129  //
   130  // GitHub API docs: https://docs.github.com/en/rest/teams/members#add-or-update-team-membership-for-a-user
   131  func (s *TeamsService) AddTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) {
   132  	u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user)
   133  	req, err := s.client.NewRequest("PUT", u, opts)
   134  	if err != nil {
   135  		return nil, nil, err
   136  	}
   137  
   138  	t := new(Membership)
   139  	resp, err := s.client.Do(ctx, req, t)
   140  	if err != nil {
   141  		return nil, resp, err
   142  	}
   143  
   144  	return t, resp, nil
   145  }
   146  
   147  // AddTeamMembershipBySlug adds or invites a user to a team, given a specified
   148  // organization name, by team slug.
   149  //
   150  // GitHub API docs: https://docs.github.com/en/rest/teams/members#add-or-update-team-membership-for-a-user
   151  func (s *TeamsService) AddTeamMembershipBySlug(ctx context.Context, org, slug, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) {
   152  	u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user)
   153  	req, err := s.client.NewRequest("PUT", u, opts)
   154  	if err != nil {
   155  		return nil, nil, err
   156  	}
   157  
   158  	t := new(Membership)
   159  	resp, err := s.client.Do(ctx, req, t)
   160  	if err != nil {
   161  		return nil, resp, err
   162  	}
   163  
   164  	return t, resp, nil
   165  }
   166  
   167  // RemoveTeamMembershipByID removes a user from a team, given a specified
   168  // organization ID, by team ID.
   169  //
   170  // GitHub API docs: https://docs.github.com/en/rest/teams/members#remove-team-membership-for-a-user
   171  func (s *TeamsService) RemoveTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Response, error) {
   172  	u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user)
   173  	req, err := s.client.NewRequest("DELETE", u, nil)
   174  	if err != nil {
   175  		return nil, err
   176  	}
   177  
   178  	return s.client.Do(ctx, req, nil)
   179  }
   180  
   181  // RemoveTeamMembershipBySlug removes a user from a team, given a specified
   182  // organization name, by team slug.
   183  //
   184  // GitHub API docs: https://docs.github.com/en/rest/teams/members#remove-team-membership-for-a-user
   185  func (s *TeamsService) RemoveTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Response, error) {
   186  	u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user)
   187  	req, err := s.client.NewRequest("DELETE", u, nil)
   188  	if err != nil {
   189  		return nil, err
   190  	}
   191  
   192  	return s.client.Do(ctx, req, nil)
   193  }
   194  
   195  // ListPendingTeamInvitationsByID gets pending invitation list of a team, given a specified
   196  // organization ID, by team ID.
   197  //
   198  // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-pending-team-invitations
   199  func (s *TeamsService) ListPendingTeamInvitationsByID(ctx context.Context, orgID, teamID int64, opts *ListOptions) ([]*Invitation, *Response, error) {
   200  	u := fmt.Sprintf("organizations/%v/team/%v/invitations", orgID, teamID)
   201  	u, err := addOptions(u, opts)
   202  	if err != nil {
   203  		return nil, nil, err
   204  	}
   205  
   206  	req, err := s.client.NewRequest("GET", u, nil)
   207  	if err != nil {
   208  		return nil, nil, err
   209  	}
   210  
   211  	var pendingInvitations []*Invitation
   212  	resp, err := s.client.Do(ctx, req, &pendingInvitations)
   213  	if err != nil {
   214  		return nil, resp, err
   215  	}
   216  
   217  	return pendingInvitations, resp, nil
   218  }
   219  
   220  // ListPendingTeamInvitationsBySlug get pending invitation list of a team, given a specified
   221  // organization name, by team slug.
   222  //
   223  // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-pending-team-invitations
   224  func (s *TeamsService) ListPendingTeamInvitationsBySlug(ctx context.Context, org, slug string, opts *ListOptions) ([]*Invitation, *Response, error) {
   225  	u := fmt.Sprintf("orgs/%v/teams/%v/invitations", org, slug)
   226  	u, err := addOptions(u, opts)
   227  	if err != nil {
   228  		return nil, nil, err
   229  	}
   230  
   231  	req, err := s.client.NewRequest("GET", u, nil)
   232  	if err != nil {
   233  		return nil, nil, err
   234  	}
   235  
   236  	var pendingInvitations []*Invitation
   237  	resp, err := s.client.Do(ctx, req, &pendingInvitations)
   238  	if err != nil {
   239  		return nil, resp, err
   240  	}
   241  
   242  	return pendingInvitations, resp, nil
   243  }
   244  

View as plain text