mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-11 00:11:25 +00:00
Compare commits
18 Commits
github-api
...
github-api
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
83a718c9db | ||
|
|
2abf03ccb7 | ||
|
|
a59810a487 | ||
|
|
9cc9e06ad1 | ||
|
|
0108a0c146 | ||
|
|
4188758d84 | ||
|
|
2144100f81 | ||
|
|
8a61e04be6 | ||
|
|
eaeb083891 | ||
|
|
25e117b412 | ||
|
|
6b7ceed1a5 | ||
|
|
0533fc98a2 | ||
|
|
edde3ab2fb | ||
|
|
ec20e518be | ||
|
|
930a582afa | ||
|
|
7536eeea54 | ||
|
|
d940d43907 | ||
|
|
3ad3dd9493 |
13
pom.xml
13
pom.xml
@@ -7,7 +7,7 @@
|
||||
</parent>
|
||||
|
||||
<artifactId>github-api</artifactId>
|
||||
<version>1.45</version>
|
||||
<version>1.47</version>
|
||||
<name>GitHub API for Java</name>
|
||||
<url>http://github-api.kohsuke.org/</url>
|
||||
<description>GitHub API for Java</description>
|
||||
@@ -34,7 +34,7 @@
|
||||
<plugin>
|
||||
<groupId>com.infradna.tool</groupId>
|
||||
<artifactId>bridge-method-injector</artifactId>
|
||||
<version>1.2</version>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
@@ -76,7 +76,7 @@
|
||||
<dependency>
|
||||
<groupId>com.infradna.tool</groupId>
|
||||
<artifactId>bridge-method-annotation</artifactId>
|
||||
<version>1.4</version>
|
||||
<version>1.8</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -98,6 +98,12 @@
|
||||
<url>http://repo.jenkins-ci.org/public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<pluginRepositories>
|
||||
<pluginRepository>
|
||||
<id>repo.jenkins-ci.org</id>
|
||||
<url>http://repo.jenkins-ci.org/public/</url>
|
||||
</pluginRepository>
|
||||
</pluginRepositories>
|
||||
|
||||
<reporting>
|
||||
<plugins>
|
||||
@@ -107,4 +113,5 @@
|
||||
</plugin>
|
||||
</plugins>
|
||||
</reporting>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -31,11 +32,13 @@ public class GHCommit {
|
||||
|
||||
private int comment_count;
|
||||
|
||||
public GHAuthor getAuthor() {
|
||||
@WithBridgeMethods(value=GHAuthor.class,castRequired=true)
|
||||
public GitUser getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public GHAuthor getCommitter() {
|
||||
@WithBridgeMethods(value=GHAuthor.class,castRequired=true)
|
||||
public GitUser getCommitter() {
|
||||
return committer;
|
||||
}
|
||||
|
||||
@@ -50,21 +53,11 @@ public class GHCommit {
|
||||
return comment_count;
|
||||
}
|
||||
}
|
||||
|
||||
public static class GHAuthor {
|
||||
private String name,email,date;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return GitHub.parseDate(date);
|
||||
}
|
||||
/**
|
||||
* @deprecated Use {@link GitUser} instead.
|
||||
*/
|
||||
public static class GHAuthor extends GitUser {
|
||||
}
|
||||
|
||||
public static class Stats {
|
||||
|
||||
@@ -31,11 +31,11 @@ package org.kohsuke.github;
|
||||
public class GHCommitPointer {
|
||||
private String ref, sha, label;
|
||||
private GHUser user;
|
||||
private GHRepository repository/*V2*/,repo/*V3*/;
|
||||
private GHRepository repo;
|
||||
|
||||
/**
|
||||
* This points to the user who owns
|
||||
* the {@link #repository}.
|
||||
* the {@link #getRepository()}.
|
||||
*/
|
||||
public GHUser getUser() {
|
||||
return user;
|
||||
@@ -45,7 +45,7 @@ public class GHCommitPointer {
|
||||
* The repository that contains the commit.
|
||||
*/
|
||||
public GHRepository getRepository() {
|
||||
return repo!=null ? repo : repository;
|
||||
return repo;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,6 +72,5 @@ public class GHCommitPointer {
|
||||
void wrapUp(GitHub root) {
|
||||
if (user!=null) user.root = root;
|
||||
if (repo!=null) repo.wrap(root);
|
||||
if (repository!=null) repository.wrap(root);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
|
||||
@@ -109,11 +111,13 @@ public class GHCompare {
|
||||
return message;
|
||||
}
|
||||
|
||||
public User getAuthor() {
|
||||
@WithBridgeMethods(value=User.class,castRequired=true)
|
||||
public GitUser getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public User getCommitter() {
|
||||
@WithBridgeMethods(value=User.class,castRequired=true)
|
||||
public GitUser getCommitter() {
|
||||
return committer;
|
||||
}
|
||||
|
||||
@@ -134,23 +138,13 @@ public class GHCompare {
|
||||
}
|
||||
}
|
||||
|
||||
public static class User {
|
||||
private String name, email, date;
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return GitHub.parseDate(date);
|
||||
}
|
||||
/**
|
||||
* @deprecated use {@link GitUser} instead.
|
||||
*/
|
||||
public static class User extends GitUser {
|
||||
}
|
||||
|
||||
public static enum Status {
|
||||
behind, ahead, identical;
|
||||
behind, ahead, identical
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ package org.kohsuke.github;
|
||||
* See http://developer.github.com/v3/events/types/
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
* @see GHEventInfo
|
||||
*/
|
||||
public enum GHEvent {
|
||||
COMMIT_COMMENT,
|
||||
@@ -22,6 +23,7 @@ public enum GHEvent {
|
||||
MEMBER,
|
||||
PUBLIC,
|
||||
PULL_REQUEST,
|
||||
PULL_REQUEST_REVIEW_COMMENT,
|
||||
PUSH,
|
||||
TEAM_ADD,
|
||||
WATCH
|
||||
|
||||
@@ -63,6 +63,13 @@ public class GHEventInfo {
|
||||
return root.getUser(actor.getLogin());
|
||||
}
|
||||
|
||||
/**
|
||||
* Quick way to just get the actor of the login.
|
||||
*/
|
||||
public String getActorLogin() throws IOException {
|
||||
return actor.getLogin();
|
||||
}
|
||||
|
||||
public GHOrganization getOrganization() throws IOException {
|
||||
return (org==null || org.getLogin()==null) ? null : root.getOrganization(org.getLogin());
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.io.Reader;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Base type for types used in databinding of the event payload.
|
||||
@@ -8,6 +9,7 @@ import java.io.Reader;
|
||||
* @see GitHub#parseEventPayload(Reader, Class)
|
||||
* @see GHEventInfo#getPayload(Class)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public abstract class GHEventPayload {
|
||||
protected GitHub root;
|
||||
|
||||
@@ -21,7 +23,7 @@ public abstract class GHEventPayload {
|
||||
/**
|
||||
* A pull request status has changed.
|
||||
*
|
||||
* @see http://developer.github.com/v3/activity/events/types/#pullrequestevent
|
||||
* @see <a href="http://developer.github.com/v3/activity/events/types/#pullrequestevent">authoritative source</a>
|
||||
*/
|
||||
public static class PullRequest extends GHEventPayload {
|
||||
private String action;
|
||||
@@ -61,7 +63,7 @@ public abstract class GHEventPayload {
|
||||
/**
|
||||
* A comment was added to an issue
|
||||
*
|
||||
* @see http://developer.github.com/v3/activity/events/types/#issuecommentevent
|
||||
* @see <a href="http://developer.github.com/v3/activity/events/types/#issuecommentevent">authoritative source</a>
|
||||
*/
|
||||
public static class IssueComment extends GHEventPayload {
|
||||
private String action;
|
||||
@@ -105,4 +107,88 @@ public abstract class GHEventPayload {
|
||||
comment.wrapUp(issue);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A commit was pushed.
|
||||
*
|
||||
* @see <a href="http://developer.github.com/v3/activity/events/types/#pushevent">authoritative source</a>
|
||||
*/
|
||||
public static class Push extends GHEventPayload {
|
||||
private String head, before;
|
||||
private String ref;
|
||||
private int size;
|
||||
private List<PushCommit> commits;
|
||||
|
||||
/**
|
||||
* The SHA of the HEAD commit on the repository
|
||||
*/
|
||||
public String getHead() {
|
||||
return head;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is undocumented, but it looks like this captures the commit that the ref was pointing to
|
||||
* before the push.
|
||||
*/
|
||||
public String getBefore() {
|
||||
return before;
|
||||
}
|
||||
|
||||
/**
|
||||
* The full Git ref that was pushed. Example: “refs/heads/master”
|
||||
*/
|
||||
public String getRef() {
|
||||
return ref;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of commits in the push.
|
||||
* Is this always the same as {@code getCommits().size()}?
|
||||
*/
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* The list of pushed commits.
|
||||
*/
|
||||
public List<PushCommit> getCommits() {
|
||||
return commits;
|
||||
}
|
||||
|
||||
/**
|
||||
* Commit in a push
|
||||
*/
|
||||
public static class PushCommit {
|
||||
private GitUser author;
|
||||
private String url, sha, message;
|
||||
private boolean distinct;
|
||||
|
||||
public GitUser getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
/**
|
||||
* Points to the commit API resource.
|
||||
*/
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getSha() {
|
||||
return sha;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this commit is distinct from any that have been pushed before.
|
||||
*/
|
||||
public boolean isDistinct() {
|
||||
return distinct;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,4 +156,21 @@ public class GHOrganization extends GHPerson {
|
||||
}
|
||||
return all;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists events performed by a user (this includes private events if the caller is authenticated.
|
||||
*/
|
||||
public PagedIterable<GHEventInfo> listEvents() throws IOException {
|
||||
return new PagedIterable<GHEventInfo>() {
|
||||
public PagedIterator<GHEventInfo> iterator() {
|
||||
return new PagedIterator<GHEventInfo>(root.retrieve().asIterator(String.format("/orgs/%s/events", login), GHEventInfo[].class)) {
|
||||
@Override
|
||||
protected void wrapUp(GHEventInfo[] page) {
|
||||
for (GHEventInfo c : page)
|
||||
c.wrapUp(root);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,6 +135,11 @@ public abstract class GHPerson {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists events for an organization or an user.
|
||||
*/
|
||||
public abstract PagedIterable<GHEventInfo> listEvents() throws IOException;
|
||||
|
||||
/**
|
||||
* Gravatar ID of this user, like 0cb9832a01c22c083390f3c5dcb64105
|
||||
*
|
||||
|
||||
@@ -23,8 +23,9 @@
|
||||
*/
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Commit detail inside a {@link GHPullRequest}.
|
||||
@@ -33,25 +34,12 @@ import java.util.Date;
|
||||
*/
|
||||
public class GHPullRequestCommitDetail {
|
||||
|
||||
public static class Authorship {
|
||||
String name;
|
||||
String email;
|
||||
String date;
|
||||
/**
|
||||
* @deprecated Use {@link GitUser}
|
||||
*/
|
||||
public static class Authorship extends GitUser {}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return GitHub.parseDate(date);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Tree {
|
||||
public static class Tree {
|
||||
String sha;
|
||||
String url;
|
||||
|
||||
@@ -72,11 +60,13 @@ public class GHPullRequestCommitDetail {
|
||||
String url;
|
||||
int comment_count;
|
||||
|
||||
public Authorship getAuthor() {
|
||||
@WithBridgeMethods(value=Authorship.class,castRequired=true)
|
||||
public GitUser getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
public Authorship getCommitter() {
|
||||
@WithBridgeMethods(value=Authorship.class,castRequired=true)
|
||||
public GitUser getCommitter() {
|
||||
return committer;
|
||||
}
|
||||
|
||||
|
||||
@@ -143,7 +143,24 @@ public class GHRepository {
|
||||
}
|
||||
|
||||
public List<GHIssue> getIssues(GHIssueState state) throws IOException {
|
||||
return Arrays.asList(GHIssue.wrap(root.retrieve().to("/repos/" + owner.login + "/" + name + "/issues?state=" + state.toString().toLowerCase(), GHIssue[].class), this));
|
||||
return listIssues(state).asList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists up all the issues in this repository.
|
||||
*/
|
||||
public PagedIterable<GHIssue> listIssues(final GHIssueState state) {
|
||||
return new PagedIterable<GHIssue>() {
|
||||
public PagedIterator<GHIssue> iterator() {
|
||||
return new PagedIterator<GHIssue>(root.retrieve().asIterator(getApiTailUrl("issues?state="+state.toString().toLowerCase(Locale.ENGLISH)), GHIssue[].class)) {
|
||||
@Override
|
||||
protected void wrapUp(GHIssue[] page) {
|
||||
for (GHIssue c : page)
|
||||
c.wrap(GHRepository.this);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public GHReleaseBuilder createRelease(String tag) {
|
||||
@@ -528,6 +545,22 @@ public class GHRepository {
|
||||
.to(String.format("/repos/%s/%s/statuses/%s",owner.login,this.name,sha1),GHCommitStatus.class).wrapUp(root);
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists repository events.
|
||||
*/
|
||||
public PagedIterable<GHEventInfo> listEvents() throws IOException {
|
||||
return new PagedIterable<GHEventInfo>() {
|
||||
public PagedIterator<GHEventInfo> iterator() {
|
||||
return new PagedIterator<GHEventInfo>(root.retrieve().asIterator(String.format("/repos/%s/%s/events", owner.login, name), GHEventInfo[].class)) {
|
||||
@Override
|
||||
protected void wrapUp(GHEventInfo[] page) {
|
||||
for (GHEventInfo c : page)
|
||||
c.wrapUp(root);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -103,6 +103,23 @@ public class GHUser extends GHPerson {
|
||||
return orgs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists events performed by a user (this includes private events if the caller is authenticated.
|
||||
*/
|
||||
public PagedIterable<GHEventInfo> listEvents() throws IOException {
|
||||
return new PagedIterable<GHEventInfo>() {
|
||||
public PagedIterator<GHEventInfo> iterator() {
|
||||
return new PagedIterator<GHEventInfo>(root.retrieve().asIterator(String.format("/users/%s/events", login), GHEventInfo[].class)) {
|
||||
@Override
|
||||
protected void wrapUp(GHEventInfo[] page) {
|
||||
for (GHEventInfo c : page)
|
||||
c.wrapUp(root);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "User:"+login;
|
||||
|
||||
38
src/main/java/org/kohsuke/github/GitUser.java
Normal file
38
src/main/java/org/kohsuke/github/GitUser.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Represents a user in Git who authors/commits a commit.
|
||||
*
|
||||
* In contrast, {@link GHUser} is an user of GitHub. Because Git allows a person to
|
||||
* use multiple e-mail addresses and names when creating a commit, there's generally
|
||||
* no meaningful mapping between {@link GHUser} and {@link GitUser}.
|
||||
*
|
||||
* @author Kohsuke Kawaguchi
|
||||
*/
|
||||
public class GitUser {
|
||||
private String name, email, date;
|
||||
|
||||
/**
|
||||
* Human readable name of the user, such as "Kohsuke Kawaguchi"
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* E-mail address, such as "foo@example.com"
|
||||
*/
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
/**
|
||||
* This field doesn't appear to be consistently available in all the situations where this class
|
||||
* is used.
|
||||
*/
|
||||
public Date getDate() {
|
||||
return GitHub.parseDate(date);
|
||||
}
|
||||
}
|
||||
@@ -79,6 +79,12 @@ public class AppTest extends TestCase {
|
||||
o.close();
|
||||
}
|
||||
|
||||
public void testGetIssues() throws Exception {
|
||||
List<GHIssue> closedIssues = gitHub.getUser("kohsuke").getRepository("github-api").getIssues(GHIssueState.CLOSED);
|
||||
// prior to using PagedIterable GHRepository.getIssues(GHIssueState) would only retrieve 30 issues
|
||||
assertTrue(closedIssues.size() > 30);
|
||||
}
|
||||
|
||||
public void testRateLimit() throws IOException {
|
||||
System.out.println(gitHub.getRateLimit());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user