diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 8217af5cd..a5071457b 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -441,6 +441,34 @@ public class GitHub { return new GHIssueSearchBuilder(this); } + /** + * This provides a dump of every public repository, in the order that they were created. + * @see documentation + */ + public PagedIterable listAllPublicRepositories() { + return listAllPublicRepositories(null); + } + + /** + * This provides a dump of every public repository, in the order that they were created. + * + * @param since + * The integer ID of the last Repository that you’ve seen. See {@link GHRepository#getId()} + * @see documentation + */ + public PagedIterable listAllPublicRepositories(final String since) { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(retrieve().with("since",since).asIterator("/repositories", GHRepository[].class)) { + @Override + protected void wrapUp(GHRepository[] page) { + for (GHRepository c : page) + c.wrap(GitHub.this); + } + }; + } + }; + } /*package*/ static URL parseURL(String s) { try { diff --git a/src/test/java/org/kohsuke/github/AppTest.java b/src/test/java/org/kohsuke/github/AppTest.java index 36d182588..fed7aec95 100755 --- a/src/test/java/org/kohsuke/github/AppTest.java +++ b/src/test/java/org/kohsuke/github/AppTest.java @@ -737,6 +737,18 @@ public class AppTest extends AbstractGitHubApiTestBase { assertTrue(githubApi); } + @Test + public void testListAllRepositories() throws Exception { + Iterator itr = gitHub.listAllPublicRepositories().iterator(); + for (int i=0; i<30; i++) { + assertTrue(itr.hasNext()); + GHRepository r = itr.next(); + System.out.println(r.getFullName()); + assertNotNull(r.getUrl()); + assertNotEquals(0,r.getId()); + } + } + private void kohsuke() { String login = getUser().getLogin(); Assume.assumeTrue(login.equals("kohsuke") || login.equals("kohsuke2"));