1
2
3
4
5
6 package github
7
8 import (
9 "context"
10 "fmt"
11 )
12
13
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
21 type Reviewers struct {
22 Users []*User `json:"users,omitempty"`
23 Teams []*Team `json:"teams,omitempty"`
24 }
25
26
27
28
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
46
47
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
70
71
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 }
81
View as plain text