@@ -526,13 +526,14 @@ func (client *Client) ReviewStatus(pr *github.PullRequest) (bool, error) {
526526 owner := repo .Owner .GetLogin ()
527527 name := repo .GetName ()
528528
529- reviewers , _ , err := client .PullRequests . ListReviewers ( client . Ctx , owner , name , pr . GetNumber (), nil )
529+ reviewers , err := client .AllReviewers ( pr )
530530 if err != nil {
531- return false , errors . Wrapf ( err , "cannot list reviewers for PR %d on %s" , pr . GetNumber (), repo . GetFullName ())
531+ return false , err
532532 }
533- reviews , _ , err := client .PullRequests .ListReviews (client .Ctx , owner , name , pr .GetNumber (), nil )
533+
534+ reviews , err := client .AllReviews (pr )
534535 if err != nil {
535- return false , errors . Wrapf ( err , "cannot list reviews for PR %d on %s" , pr . GetNumber (), repo . GetFullName ())
536+ return false , err
536537 }
537538
538539 approval := false
@@ -610,11 +611,7 @@ func (client *Client) ReviewStatus(pr *github.PullRequest) (bool, error) {
610611}
611612
612613func (client * Client ) LastReviewFromUser (pr * github.PullRequest , user * github.User ) (* github.PullRequestReview , error ) {
613- repo := pr .Base .Repo
614- owner := repo .Owner .GetLogin ()
615- name := repo .GetName ()
616-
617- reviews , _ , err := client .PullRequests .ListReviews (client .Ctx , owner , name , pr .GetNumber (), nil )
614+ reviews , err := client .AllReviews (pr )
618615 if err != nil {
619616 return nil , err
620617 }
@@ -764,24 +761,78 @@ func (client *Client) ShaStatus(pr *github.PullRequest, SHA string) (bool, error
764761}
765762
766763func (client * Client ) AllRepositories (user * github.User ) ([]* github.Repository , error ) {
767- ownedRepos := []* github.Repository {}
768- listOptions := & github.RepositoryListOptions {
764+ opts := & github.RepositoryListOptions {
769765 ListOptions : github.ListOptions {
770766 PerPage : 100 ,
771767 },
772768 }
773769
770+ var allRepos []* github.Repository
774771 for {
775- repos , resp , err := client .Repositories .List (client .Ctx , "" , listOptions )
772+ repos , resp , err := client .Repositories .List (client .Ctx , "" , opts )
776773 if err != nil {
777774 return nil , errors .Wrapf (err , "cannot list repositories for user %s" , user .GetLogin ())
778775 }
779- ownedRepos = append (ownedRepos , repos ... )
776+ allRepos = append (allRepos , repos ... )
780777 if resp .NextPage == 0 {
781778 break
782779 }
783- listOptions .ListOptions .Page = resp .NextPage
780+ opts .Page = resp .NextPage
781+ }
782+
783+ return allRepos , nil
784+ }
785+
786+ func (client * Client ) AllReviews (pr * github.PullRequest ) ([]* github.PullRequestReview , error ) {
787+ repo := pr .Base .Repo
788+ owner := repo .Owner .GetLogin ()
789+ name := repo .GetName ()
790+
791+ opts := & github.ListOptions {
792+ PerPage : 100 ,
793+ }
794+
795+ var allReviews []* github.PullRequestReview
796+ for {
797+ reviews , resp , err := client .PullRequests .ListReviews (client .Ctx , owner , name , pr .GetNumber (), opts )
798+ if err != nil {
799+ return nil , errors .Wrapf (err , "cannot list reviews for %s#%d" , repo .GetFullName (), pr .GetNumber ())
800+ }
801+
802+ allReviews = append (allReviews , reviews ... )
803+ if resp .NextPage == 0 {
804+ break
805+ }
806+ opts .Page = resp .NextPage
807+ }
808+
809+ return allReviews , nil
810+ }
811+
812+ func (client * Client ) AllReviewers (pr * github.PullRequest ) (* github.Reviewers , error ) {
813+ repo := pr .Base .Repo
814+ owner := repo .Owner .GetLogin ()
815+ name := repo .GetName ()
816+
817+ opts := & github.ListOptions {
818+ PerPage : 100 ,
819+ }
820+
821+ var allReviewers github.Reviewers
822+ for {
823+ reviewers , resp , err := client .PullRequests .ListReviewers (client .Ctx , owner , name , pr .GetNumber (), opts )
824+ if err != nil {
825+ return nil , errors .Wrapf (err , "cannot list reviewers for %s#%d" , repo .GetFullName (), pr .GetNumber ())
826+ }
827+
828+ allReviewers .Users = append (allReviewers .Users , reviewers .Users ... )
829+ allReviewers .Teams = append (allReviewers .Teams , reviewers .Teams ... )
830+
831+ if resp .NextPage == 0 {
832+ break
833+ }
834+ opts .Page = resp .NextPage
784835 }
785836
786- return ownedRepos , nil
837+ return & allReviewers , nil
787838}
0 commit comments