github.com/google/go-github/v49@v49.1.0/github/pulls_reviewers.go (about) 1 // Copyright 2017 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 // ReviewersRequest specifies users and teams for a pull request review request. 14 type ReviewersRequest struct { 15 NodeID *string `json:"node_id,omitempty"` 16 Reviewers []string `json:"reviewers,omitempty"` 17 TeamReviewers []string `json:"team_reviewers,omitempty"` 18 } 19 20 // Reviewers represents reviewers of a pull request. 21 type Reviewers struct { 22 Users []*User `json:"users,omitempty"` 23 Teams []*Team `json:"teams,omitempty"` 24 } 25 26 // RequestReviewers creates a review request for the provided reviewers for the specified pull request. 27 // 28 // GitHub API docs: https://docs.github.com/en/rest/pulls/review-requests#request-reviewers-for-a-pull-request 29 func (s *PullRequestsService) RequestReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*PullRequest, *Response, error) { 30 u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) 31 req, err := s.client.NewRequest("POST", u, &reviewers) 32 if err != nil { 33 return nil, nil, err 34 } 35 36 r := new(PullRequest) 37 resp, err := s.client.Do(ctx, req, r) 38 if err != nil { 39 return nil, resp, err 40 } 41 42 return r, resp, nil 43 } 44 45 // ListReviewers lists reviewers whose reviews have been requested on the specified pull request. 46 // 47 // GitHub API docs: https://docs.github.com/en/rest/pulls/review-requests#list-requested-reviewers-for-a-pull-request 48 func (s *PullRequestsService) ListReviewers(ctx context.Context, owner, repo string, number int, opts *ListOptions) (*Reviewers, *Response, error) { 49 u := fmt.Sprintf("repos/%v/%v/pulls/%d/requested_reviewers", owner, repo, number) 50 u, err := addOptions(u, opts) 51 if err != nil { 52 return nil, nil, err 53 } 54 55 req, err := s.client.NewRequest("GET", u, nil) 56 if err != nil { 57 return nil, nil, err 58 } 59 60 reviewers := new(Reviewers) 61 resp, err := s.client.Do(ctx, req, reviewers) 62 if err != nil { 63 return nil, resp, err 64 } 65 66 return reviewers, resp, nil 67 } 68 69 // RemoveReviewers removes the review request for the provided reviewers for the specified pull request. 70 // 71 // GitHub API docs: https://docs.github.com/en/rest/pulls/review-requests#remove-requested-reviewers-from-a-pull-request 72 func (s *PullRequestsService) RemoveReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*Response, error) { 73 u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) 74 req, err := s.client.NewRequest("DELETE", u, &reviewers) 75 if err != nil { 76 return nil, err 77 } 78 79 return s.client.Do(ctx, req, nil) 80 }