From 8f24f55eb750df48f2588aec0a6164771d0e417c Mon Sep 17 00:00:00 2001 From: vr100 Date: Wed, 19 Mar 2014 11:06:11 +0530 Subject: [PATCH 1/4] Added apis to list commits by author and list the repos of an organization (including the private ones) --- .../org/kohsuke/github/GHOrganization.java | 21 ++++++++++ .../java/org/kohsuke/github/GHRepository.java | 38 +++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index ec899c0538..657ab93efd 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -173,4 +173,25 @@ protected void wrapUp(GHEventInfo[] page) { } }; } + + /** + * Lists up all the repositories of an organization using the specified page size. (this + * includes private organizations if the caller is authenticated accordingly) + * + * @param pageSize size for each page of items returned by GitHub. Maximum page size is 100. + * + */ + public PagedIterable listRepositories(final int pageSize) { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator("/orgs/" + login + "/repos?per_page=" + pageSize, GHRepository[].class)) { + @Override + protected void wrapUp(GHRepository[] page) { + for (GHRepository c : page) + c.wrap(root); + } + }; + } + }; + } } diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index c1146f8e4b..685ef07fc3 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -487,6 +487,44 @@ protected void wrapUp(GHCommit[] page) { } }; } + + /** + * Lists all the commit by author + */ + public PagedIterable listCommitsByAuthor(final String author) { + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator(String.format("/repos/%s/%s/commits?author=%s", owner.login, name, author), GHCommit[].class)) { + protected void wrapUp(GHCommit[] page) { + for (GHCommit c : page) + c.wrapUp(GHRepository.this); + } + }; + } + }; + } + + /** + * Lists all the commit by author for the given branch from the startCommitSha (startCommitSha is optional) + */ + public PagedIterable listCommitsByAuthorAndBranch(final String author, final String branch, final String startCommitSha) { + String url =String.format("/repos/%s/%s/commits?author=%s", owner.login, name, author); + url = url + String.format("&sha=%s", branch); + if (startCommitSha != null && !startCommitSha.isEmpty()) { + url = url + String.format("&sha=%s", startCommitSha); + } + final String finalUrl = url; + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator(finalUrl, GHCommit[].class)) { + protected void wrapUp(GHCommit[] page) { + for (GHCommit c : page) + c.wrapUp(GHRepository.this); + } + }; + } + }; + } /** * Lists up all the commit comments in this repository. From 0b74692d62e80d36ce58aaaec10cfa890e6fdf43 Mon Sep 17 00:00:00 2001 From: vr100 Date: Wed, 19 Mar 2014 11:38:03 +0530 Subject: [PATCH 2/4] change in comment --- src/main/java/org/kohsuke/github/GHOrganization.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index 657ab93efd..08b4f4c007 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -176,7 +176,7 @@ protected void wrapUp(GHEventInfo[] page) { /** * Lists up all the repositories of an organization using the specified page size. (this - * includes private organizations if the caller is authenticated accordingly) + * includes private repos if the caller is authenticated accordingly) * * @param pageSize size for each page of items returned by GitHub. Maximum page size is 100. * From 15c5c9615e594cdd23aa39e83039a3616bb9bd61 Mon Sep 17 00:00:00 2001 From: vr100 Date: Thu, 20 Mar 2014 15:00:34 +0530 Subject: [PATCH 3/4] Added pagesize parameter to 'Get commits by author and branch' api --- .../java/org/kohsuke/github/GHRepository.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 685ef07fc3..46d79e6c99 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -525,6 +525,30 @@ protected void wrapUp(GHCommit[] page) { } }; } + + /** + * Lists all the commit by author for the given branch from the startCommitSha (startCommitSha is optional) + */ + public PagedIterable listCommitsByAuthorAndBranch(final String author, final String branch, + final String startCommitSha, int pageSize) { + String url =String.format("/repos/%s/%s/commits?author=%s", owner.login, name, author); + url = url + String.format("&sha=%s", branch); + if (startCommitSha != null && !startCommitSha.isEmpty()) { + url = url + String.format("&sha=%s", startCommitSha); + } + url = url + String.format("&per_page=%s", pageSize); + final String finalUrl = url; + return new PagedIterable() { + public PagedIterator iterator() { + return new PagedIterator(root.retrieve().asIterator(finalUrl, GHCommit[].class)) { + protected void wrapUp(GHCommit[] page) { + for (GHCommit c : page) + c.wrapUp(GHRepository.this); + } + }; + } + }; + } /** * Lists up all the commit comments in this repository. From 9c02f918c1a09baa730c5b4ea59c1bf035de7dc2 Mon Sep 17 00:00:00 2001 From: vr100 Date: Wed, 26 Mar 2014 09:23:26 +0530 Subject: [PATCH 4/4] In order to handle http based github enterprise vm url, changing https to http --- src/main/java/org/kohsuke/github/Requester.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/kohsuke/github/Requester.java b/src/main/java/org/kohsuke/github/Requester.java index fa9bc3191c..dd825e0b12 100644 --- a/src/main/java/org/kohsuke/github/Requester.java +++ b/src/main/java/org/kohsuke/github/Requester.java @@ -23,9 +23,8 @@ */ package org.kohsuke.github; -import org.apache.commons.io.IOUtils; +import static org.kohsuke.github.GitHub.MAPPER; -import javax.net.ssl.HttpsURLConnection; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -48,7 +47,7 @@ import java.util.Set; import java.util.zip.GZIPInputStream; -import static org.kohsuke.github.GitHub.MAPPER; +import org.apache.commons.io.IOUtils; /** * A builder pattern for making HTTP call and parsing its output. @@ -294,7 +293,7 @@ private void findNextURL(HttpURLConnection uc) throws MalformedURLException { private HttpURLConnection setupConnection(URL url) throws IOException { - HttpsURLConnection uc = (HttpsURLConnection) url.openConnection(); + HttpURLConnection uc = (HttpURLConnection) url.openConnection(); // if the authentication is needed but no credential is given, try it anyway (so that some calls // that do work with anonymous access in the reduced form should still work.)