diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index c1d29ccbd..4707bb0aa 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -1093,6 +1093,27 @@ public class GHRepository extends GHObject { } } + public PagedIterable listContributors() throws IOException { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator(getApiTailUrl("contributors"), Contributor[].class)) { + @Override + protected void wrapUp(Contributor[] page) { + for (Contributor c : page) + c.wrapUp(root); + } + }; + } + }; + } + + public static class Contributor extends GHUser { + private int contributions; + + public int getContributions() { + return contributions; + } + } diff --git a/src/test/java/org/kohsuke/github/RepositoryTest.java b/src/test/java/org/kohsuke/github/RepositoryTest.java index 2a5b62baa..6862ace7b 100644 --- a/src/test/java/org/kohsuke/github/RepositoryTest.java +++ b/src/test/java/org/kohsuke/github/RepositoryTest.java @@ -1,6 +1,7 @@ package org.kohsuke.github; import org.junit.Test; +import org.kohsuke.github.GHRepository.Contributor; import java.io.IOException; @@ -21,6 +22,24 @@ public class RepositoryTest extends AbstractGitHubApiTestBase { assertNull(r.getSubscription()); } + @Test + public void listContributors() throws IOException { + GHRepository r = gitHub.getOrganization("stapler").getRepository("stapler"); + int i=0; + boolean kohsuke = false; + + for (Contributor c : r.listContributors()) { + System.out.println(c.getName()); + assertTrue(c.getContributions()>0); + if (c.getLogin().equals("kohsuke")) + kohsuke = true; + if (i++ > 5) + break; + } + + assertTrue(kohsuke); + } + private GHRepository getRepository() throws IOException { return gitHub.getOrganization("github-api-test-org").getRepository("jenkins"); }