github.com/google/go-github/v57@v57.0.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/rest/pulls/review-requests#request-reviewers-for-a-pull-request 29 // 30 //meta:operation POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers 31 func (s *PullRequestsService) RequestReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*PullRequest, *Response, error) { 32 u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) 33 req, err := s.client.NewRequest("POST", u, &reviewers) 34 if err != nil { 35 return nil, nil, err 36 } 37 38 r := new(PullRequest) 39 resp, err := s.client.Do(ctx, req, r) 40 if err != nil { 41 return nil, resp, err 42 } 43 44 return r, resp, nil 45 } 46 47 // ListReviewers lists reviewers whose reviews have been requested on the specified pull request. 48 // 49 // GitHub API docs: https://docs.github.com/rest/pulls/review-requests#get-all-requested-reviewers-for-a-pull-request 50 // 51 //meta:operation GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers 52 func (s *PullRequestsService) ListReviewers(ctx context.Context, owner, repo string, number int, opts *ListOptions) (*Reviewers, *Response, error) { 53 u := fmt.Sprintf("repos/%v/%v/pulls/%d/requested_reviewers", owner, repo, number) 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 reviewers := new(Reviewers) 65 resp, err := s.client.Do(ctx, req, reviewers) 66 if err != nil { 67 return nil, resp, err 68 } 69 70 return reviewers, resp, nil 71 } 72 73 // RemoveReviewers removes the review request for the provided reviewers for the specified pull request. 74 // 75 // GitHub API docs: https://docs.github.com/rest/pulls/review-requests#remove-requested-reviewers-from-a-pull-request 76 // 77 //meta:operation DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers 78 func (s *PullRequestsService) RemoveReviewers(ctx context.Context, owner, repo string, number int, reviewers ReviewersRequest) (*Response, error) { 79 u := fmt.Sprintf("repos/%s/%s/pulls/%d/requested_reviewers", owner, repo, number) 80 req, err := s.client.NewRequest("DELETE", u, &reviewers) 81 if err != nil { 82 return nil, err 83 } 84 85 return s.client.Do(ctx, req, nil) 86 }