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"));