mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-16 15:50:19 +00:00
Compare commits
18 Commits
github-api
...
github-api
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4e88a0c91b | ||
|
|
d070f9deb0 | ||
|
|
b736e20a74 | ||
|
|
aad20d0a03 | ||
|
|
7ff97348d9 | ||
|
|
68dda3a46d | ||
|
|
2cd44f8c33 | ||
|
|
9775954aff | ||
|
|
1a071b0b54 | ||
|
|
8dcea59c74 | ||
|
|
f482f77871 | ||
|
|
b058c39ee1 | ||
|
|
b926b6c67f | ||
|
|
3fb8e5f799 | ||
|
|
9ebc9c0867 | ||
|
|
f1f96713a4 | ||
|
|
fc3b6d2c2e | ||
|
|
d0d0716b3b |
4
pom.xml
4
pom.xml
@@ -7,7 +7,7 @@
|
|||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<artifactId>github-api</artifactId>
|
<artifactId>github-api</artifactId>
|
||||||
<version>1.66</version>
|
<version>1.67</version>
|
||||||
<name>GitHub API for Java</name>
|
<name>GitHub API for Java</name>
|
||||||
<url>http://github-api.kohsuke.org/</url>
|
<url>http://github-api.kohsuke.org/</url>
|
||||||
<description>GitHub API for Java</description>
|
<description>GitHub API for Java</description>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<connection>scm:git:git@github.com/kohsuke/${project.artifactId}.git</connection>
|
<connection>scm:git:git@github.com/kohsuke/${project.artifactId}.git</connection>
|
||||||
<developerConnection>scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git</developerConnection>
|
<developerConnection>scm:git:ssh://git@github.com/kohsuke/${project.artifactId}.git</developerConnection>
|
||||||
<url>http://${project.artifactId}.kohsuke.org/</url>
|
<url>http://${project.artifactId}.kohsuke.org/</url>
|
||||||
<tag>github-api-1.66</tag>
|
<tag>github-api-1.67</tag>
|
||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.kohsuke.github;
|
package org.kohsuke.github;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asset in a release.
|
* Asset in a release.
|
||||||
@@ -60,6 +61,14 @@ public class GHAsset extends GHObject {
|
|||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public String getBrowserDownloadUrl() {
|
public String getBrowserDownloadUrl() {
|
||||||
return browser_download_url;
|
return browser_download_url;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.util.List;
|
|||||||
*
|
*
|
||||||
* @author janinko
|
* @author janinko
|
||||||
* @see GitHub#createToken(Collection, String, String)
|
* @see GitHub#createToken(Collection, String, String)
|
||||||
* @see http://developer.github.com/v3/oauth/#create-a-new-authorization
|
* @see <a href="http://developer.github.com/v3/oauth/#create-a-new-authorization">API documentation</a>
|
||||||
*/
|
*/
|
||||||
public class GHAuthorization extends GHObject {
|
public class GHAuthorization extends GHObject {
|
||||||
public static final String USER = "user";
|
public static final String USER = "user";
|
||||||
@@ -47,11 +47,11 @@ public class GHAuthorization extends GHObject {
|
|||||||
return scopes;
|
return scopes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getToken(){
|
public String getToken() {
|
||||||
return token;
|
return token;
|
||||||
}
|
}
|
||||||
|
|
||||||
public URL getAppUrl(){
|
public URL getAppUrl() {
|
||||||
return GitHub.parseURL(app.url);
|
return GitHub.parseURL(app.url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,15 +59,23 @@ public class GHAuthorization extends GHObject {
|
|||||||
return app.name;
|
return app.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public URL getApiURL(){
|
public URL getApiURL() {
|
||||||
return GitHub.parseURL(url);
|
return GitHub.parseURL(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public String getNote() {
|
public String getNote() {
|
||||||
return note;
|
return note;
|
||||||
}
|
}
|
||||||
|
|
||||||
public URL getNoteUrl(){
|
public URL getNoteUrl() {
|
||||||
return GitHub.parseURL(note_url);
|
return GitHub.parseURL(note_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,10 +85,7 @@ public class GHAuthorization extends GHObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class App {
|
||||||
|
|
||||||
|
|
||||||
private static class App{
|
|
||||||
private String url;
|
private String url;
|
||||||
private String name;
|
private String name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ public class GHCommit {
|
|||||||
|
|
||||||
private int comment_count;
|
private int comment_count;
|
||||||
|
|
||||||
@WithBridgeMethods(value=GHAuthor.class,castRequired=true)
|
@WithBridgeMethods(value = GHAuthor.class, castRequired = true)
|
||||||
public GitUser getAuthor() {
|
public GitUser getAuthor() {
|
||||||
return author;
|
return author;
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithBridgeMethods(value=GHAuthor.class,castRequired=true)
|
@WithBridgeMethods(value = GHAuthor.class, castRequired = true)
|
||||||
public GitUser getCommitter() {
|
public GitUser getCommitter() {
|
||||||
return committer;
|
return committer;
|
||||||
}
|
}
|
||||||
@@ -155,7 +155,6 @@ public class GHCommit {
|
|||||||
User author,committer;
|
User author,committer;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ShortInfo getCommitShortInfo() {
|
public ShortInfo getCommitShortInfo() {
|
||||||
return commit;
|
return commit;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
package org.kohsuke.github;
|
package org.kohsuke.github;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a status of a commit.
|
* Represents a status of a commit.
|
||||||
*
|
*
|
||||||
* @author Kohsuke Kawaguchi
|
* @author Kohsuke Kawaguchi
|
||||||
* @see GHRepository#getCommitStatus(String)
|
* @see GHRepository#getLastCommitStatus(String)
|
||||||
* @see GHCommit#getStatus()
|
* @see GHCommit#getLastStatus()
|
||||||
*/
|
*/
|
||||||
public class GHCommitStatus extends GHObject {
|
public class GHCommitStatus extends GHObject {
|
||||||
String state;
|
String state;
|
||||||
@@ -52,4 +53,12 @@ public class GHCommitStatus extends GHObject {
|
|||||||
public String getContext() {
|
public String getContext() {
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,4 +50,12 @@ public class GHDeployment extends GHObject {
|
|||||||
public String getSha(){
|
public String getSha(){
|
||||||
return sha;
|
return sha;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,5 +32,11 @@ public class GHDeploymentStatus extends GHObject {
|
|||||||
return GHDeploymentState.valueOf(state.toUpperCase());
|
return GHDeploymentState.valueOf(state.toUpperCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ public abstract class GHEventPayload {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
void wrapUp(GitHub root) {
|
void wrapUp(GitHub root) {
|
||||||
|
super.wrapUp(root);
|
||||||
if (repository!=null)
|
if (repository!=null)
|
||||||
repository.wrap(root);
|
repository.wrap(root);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.kohsuke.github;
|
|||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -60,8 +61,8 @@ public class GHGist extends GHObject {
|
|||||||
return git_push_url;
|
return git_push_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHtmlUrl() {
|
public URL getHtmlUrl() {
|
||||||
return html_url;
|
return GitHub.parseURL(html_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPublic() {
|
public boolean isPublic() {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.kohsuke.github;
|
package org.kohsuke.github;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -51,4 +52,12 @@ public class GHHook extends GHObject {
|
|||||||
public void delete() throws IOException {
|
public void delete() throws IOException {
|
||||||
new Requester(repository.root).method("DELETE").to(String.format("/repos/%s/%s/hooks/%d", repository.getOwnerName(), repository.getName(), id));
|
new Requester(repository.root).method("DELETE").to(String.format("/repos/%s/%s/hooks/%d", repository.getOwnerName(), repository.getName(), id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,4 +71,12 @@ public class GHIssueComment extends GHObject {
|
|||||||
public GHUser getUser() throws IOException {
|
public GHUser getUser() throws IOException {
|
||||||
return owner.root.getUser(user.getLogin());
|
return owner.root.getUser(user.getLogin());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.kohsuke.github;
|
package org.kohsuke.github;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
@@ -14,7 +15,7 @@ public class GHMilestone extends GHObject {
|
|||||||
GHRepository owner;
|
GHRepository owner;
|
||||||
|
|
||||||
GHUser creator;
|
GHUser creator;
|
||||||
private String state, due_on, title, description;
|
private String state, due_on, title, description, html_url;
|
||||||
private int closed_issues, open_issues, number;
|
private int closed_issues, open_issues, number;
|
||||||
|
|
||||||
public GitHub getRoot() {
|
public GitHub getRoot() {
|
||||||
@@ -54,6 +55,10 @@ public class GHMilestone extends GHObject {
|
|||||||
return number;
|
return number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return GitHub.parseURL(html_url);
|
||||||
|
}
|
||||||
|
|
||||||
public GHMilestoneState getState() {
|
public GHMilestoneState getState() {
|
||||||
return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH));
|
return Enum.valueOf(GHMilestoneState.class, state.toUpperCase(Locale.ENGLISH));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,12 @@ public abstract class GHObject {
|
|||||||
return GitHub.parseURL(url);
|
return GitHub.parseURL(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL of this object for humans, which renders some HTML.
|
||||||
|
*/
|
||||||
|
@WithBridgeMethods(value=String.class, adapterMethod="urlToString")
|
||||||
|
public abstract URL getHtmlUrl();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When was this resource last updated?
|
* When was this resource last updated?
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.kohsuke.github;
|
|||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -214,8 +215,9 @@ public abstract class GHPerson extends GHObject {
|
|||||||
return blog;
|
return blog;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHtmlUrl() {
|
@Override
|
||||||
return html_url;
|
public URL getHtmlUrl() {
|
||||||
|
return GitHub.parseURL(html_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -66,9 +66,9 @@ public class GHPullRequest extends GHIssue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GHPullRequest wrapUp(GitHub root) {
|
GHPullRequest wrapUp(GitHub root) {
|
||||||
if (owner!=null) owner.wrap(root);
|
if (owner != null) owner.wrap(root);
|
||||||
if (base!=null) base.wrapUp(root);
|
if (base != null) base.wrapUp(root);
|
||||||
if (head!=null) head.wrapUp(root);
|
if (head != null) head.wrapUp(root);
|
||||||
if (merged_by != null) merged_by.wrapUp(root);
|
if (merged_by != null) merged_by.wrapUp(root);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -142,7 +142,7 @@ public class GHPullRequest extends GHIssue {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// details that are only available via get with ID
|
// details that are only available via get with ID
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.kohsuke.github;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -44,8 +45,8 @@ public class GHRelease extends GHObject {
|
|||||||
return draft;
|
return draft;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getHtmlUrl() {
|
public URL getHtmlUrl() {
|
||||||
return html_url;
|
return GitHub.parseURL(html_url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|||||||
@@ -63,6 +63,8 @@ public class GHRepository extends GHObject {
|
|||||||
|
|
||||||
private GHRepoPermission permissions;
|
private GHRepoPermission permissions;
|
||||||
|
|
||||||
|
private GHRepository source, parent;
|
||||||
|
|
||||||
public GHDeploymentBuilder createDeployment(String ref) {
|
public GHDeploymentBuilder createDeployment(String ref) {
|
||||||
return new GHDeploymentBuilder(this,ref);
|
return new GHDeploymentBuilder(this,ref);
|
||||||
}
|
}
|
||||||
@@ -159,6 +161,10 @@ public class GHRepository extends GHObject {
|
|||||||
return ssh_url;
|
return ssh_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return GitHub.parseURL(html_url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Short repository name without the owner. For example 'jenkins' in case of http://github.com/jenkinsci/jenkins
|
* Short repository name without the owner. For example 'jenkins' in case of http://github.com/jenkinsci/jenkins
|
||||||
*/
|
*/
|
||||||
@@ -353,7 +359,7 @@ public class GHRepository extends GHObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the primary branch you'll configure in the "Admin > Options" config page.
|
* Returns the primary branch you'll configure in the "Admin > Options" config page.
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
* This field is null until the user explicitly configures the master branch.
|
* This field is null until the user explicitly configures the master branch.
|
||||||
@@ -780,7 +786,7 @@ public class GHRepository extends GHObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see {@link #createCommitStatus(String, GHCommitState,String,String,String) createCommitStatus}
|
* @see #createCommitStatus(String, GHCommitState,String,String,String)
|
||||||
*/
|
*/
|
||||||
public GHCommitStatus createCommitStatus(String sha1, GHCommitState state, String targetUrl, String description) throws IOException {
|
public GHCommitStatus createCommitStatus(String sha1, GHCommitState state, String targetUrl, String description) throws IOException {
|
||||||
return createCommitStatus(sha1, state, targetUrl, description,null);
|
return createCommitStatus(sha1, state, targetUrl, description,null);
|
||||||
@@ -1107,6 +1113,38 @@ public class GHRepository extends GHObject {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forked repositories have a 'source' attribute that specifies the ultimate source of the forking chain.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* {@link GHRepository} that points to the root repository where this repository is forked
|
||||||
|
* (indirectly or directly) from. Otherwise null.
|
||||||
|
* @see #getParent()
|
||||||
|
*/
|
||||||
|
public GHRepository getSource() throws IOException {
|
||||||
|
if (source == null) return null;
|
||||||
|
if (source.root == null)
|
||||||
|
source = root.getRepository(source.getFullName());
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forked repositories have a 'parent' attribute that specifies the repository this repository
|
||||||
|
* is directly forked from. If we keep traversing {@link #getParent()} until it returns null, that
|
||||||
|
* is {@link #getSource()}.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* {@link GHRepository} that points to the repository where this repository is forked
|
||||||
|
* directly from. Otherwise null.
|
||||||
|
* @see #getSource()
|
||||||
|
*/
|
||||||
|
public GHRepository getParent() throws IOException {
|
||||||
|
if (parent == null) return null;
|
||||||
|
if (parent.root == null)
|
||||||
|
parent = root.getRepository(parent.getFullName());
|
||||||
|
return parent;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribes to this repository to get notifications.
|
* Subscribes to this repository to get notifications.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.kohsuke.github;
|
|||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -37,6 +38,14 @@ public class GHThread extends GHObject {
|
|||||||
return GitHub.parseDate(last_read_at);
|
return GitHub.parseDate(last_read_at);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated This object has no HTML URL.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public URL getHtmlUrl() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public String getReason() {
|
public String getReason() {
|
||||||
return reason;
|
return reason;
|
||||||
}
|
}
|
||||||
@@ -59,6 +68,41 @@ public class GHThread extends GHObject {
|
|||||||
return subject.type;
|
return subject.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this thread is about an issue, return that issue.
|
||||||
|
*
|
||||||
|
* @return null if this thread is not about an issue.
|
||||||
|
*/
|
||||||
|
public GHIssue getBoundIssue() throws IOException {
|
||||||
|
if (!"Issue".equals(subject.type) && "PullRequest".equals(subject.type))
|
||||||
|
return null;
|
||||||
|
return repository.getIssue(
|
||||||
|
Integer.parseInt(subject.url.substring(subject.url.lastIndexOf('/') + 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this thread is about a pull request, return that pull request.
|
||||||
|
*
|
||||||
|
* @return null if this thread is not about a pull request.
|
||||||
|
*/
|
||||||
|
public GHPullRequest getBoundPullRequest() throws IOException {
|
||||||
|
if (!"PullRequest".equals(subject.type))
|
||||||
|
return null;
|
||||||
|
return repository.getPullRequest(
|
||||||
|
Integer.parseInt(subject.url.substring(subject.url.lastIndexOf('/') + 1)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If this thread is about a commit, return that commit.
|
||||||
|
*
|
||||||
|
* @return null if this thread is not about a commit.
|
||||||
|
*/
|
||||||
|
public GHCommit getBoundCommit() throws IOException {
|
||||||
|
if (!"Commit".equals(subject.type))
|
||||||
|
return null;
|
||||||
|
return repository.getCommit(subject.url.substring(subject.url.lastIndexOf('/') + 1));
|
||||||
|
}
|
||||||
|
|
||||||
/*package*/ GHThread wrap(GitHub root) {
|
/*package*/ GHThread wrap(GitHub root) {
|
||||||
this.root = root;
|
this.root = root;
|
||||||
if (this.repository!=null)
|
if (this.repository!=null)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
|||||||
* <p>
|
* <p>
|
||||||
* This library aims to be safe for use by multiple threads concurrently, although
|
* This library aims to be safe for use by multiple threads concurrently, although
|
||||||
* the library itself makes no attempt to control/serialize potentially conflicting
|
* the library itself makes no attempt to control/serialize potentially conflicting
|
||||||
* operations to GitHub, such as updating & deleting a repository at the same time.
|
* operations to GitHub, such as updating & deleting a repository at the same time.
|
||||||
*
|
*
|
||||||
* @author Kohsuke Kawaguchi
|
* @author Kohsuke Kawaguchi
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -479,6 +479,9 @@ class Requester {
|
|||||||
* Handle API error by either throwing it or by returning normally to retry.
|
* Handle API error by either throwing it or by returning normally to retry.
|
||||||
*/
|
*/
|
||||||
/*package*/ void handleApiError(IOException e) throws IOException {
|
/*package*/ void handleApiError(IOException e) throws IOException {
|
||||||
|
if (uc.getResponseCode() == 401) // Unauthorized == bad creds
|
||||||
|
throw e;
|
||||||
|
|
||||||
if ("0".equals(uc.getHeaderField("X-RateLimit-Remaining"))) {
|
if ("0".equals(uc.getHeaderField("X-RateLimit-Remaining"))) {
|
||||||
root.rateLimitHandler.onError(e,uc);
|
root.rateLimitHandler.onError(e,uc);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ public abstract class AbstractGitHubApiTestBase extends Assert {
|
|||||||
if (f.exists()) {
|
if (f.exists()) {
|
||||||
// use the non-standard credential preferentially, so that developers of this library do not have
|
// use the non-standard credential preferentially, so that developers of this library do not have
|
||||||
// to clutter their event stream.
|
// to clutter their event stream.
|
||||||
gitHub = GitHubBuilder.fromPropertyFile(f.getPath()).build();
|
gitHub = GitHubBuilder.fromPropertyFile(f.getPath()).withRateLimitHandler(RateLimitHandler.FAIL).build();
|
||||||
} else {
|
} else {
|
||||||
gitHub = GitHub.connect();
|
gitHub = GitHubBuilder.fromCredentials().withRateLimitHandler(RateLimitHandler.FAIL).build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -674,7 +674,7 @@ public class AppTest extends AbstractGitHubApiTestBase {
|
|||||||
GHTree masterTree = gitHub.getRepository("kohsuke/github-api").getTree("master");
|
GHTree masterTree = gitHub.getRepository("kohsuke/github-api").getTree("master");
|
||||||
boolean foundReadme = false;
|
boolean foundReadme = false;
|
||||||
for(GHTreeEntry e : masterTree.getTree()){
|
for(GHTreeEntry e : masterTree.getTree()){
|
||||||
if("readme".equalsIgnoreCase(e.getPath().replaceAll(".md", ""))){
|
if("readme".equalsIgnoreCase(e.getPath().replaceAll("\\.md", ""))){
|
||||||
foundReadme = true;
|
foundReadme = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,8 +55,7 @@ public class GitHubTest extends TestCase {
|
|||||||
* Its used to wire in values for the github credentials to test that the GitHubBuilder works properly to resolve them.
|
* Its used to wire in values for the github credentials to test that the GitHubBuilder works properly to resolve them.
|
||||||
*/
|
*/
|
||||||
private void setupEnvironment(Map<String, String> newenv) {
|
private void setupEnvironment(Map<String, String> newenv) {
|
||||||
try
|
try {
|
||||||
{
|
|
||||||
Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
|
Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
|
||||||
Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment");
|
Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment");
|
||||||
theEnvironmentField.setAccessible(true);
|
theEnvironmentField.setAccessible(true);
|
||||||
@@ -66,14 +65,12 @@ public class GitHubTest extends TestCase {
|
|||||||
theCaseInsensitiveEnvironmentField.setAccessible(true);
|
theCaseInsensitiveEnvironmentField.setAccessible(true);
|
||||||
Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
|
Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
|
||||||
cienv.putAll(newenv);
|
cienv.putAll(newenv);
|
||||||
}
|
} catch (NoSuchFieldException e) {
|
||||||
catch (NoSuchFieldException e)
|
|
||||||
{
|
|
||||||
try {
|
try {
|
||||||
Class[] classes = Collections.class.getDeclaredClasses();
|
Class[] classes = Collections.class.getDeclaredClasses();
|
||||||
Map<String, String> env = System.getenv();
|
Map<String, String> env = System.getenv();
|
||||||
for(Class cl : classes) {
|
for (Class cl : classes) {
|
||||||
if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
|
if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
|
||||||
Field field = cl.getDeclaredField("m");
|
Field field = cl.getDeclaredField("m");
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
Object obj = field.get(env);
|
Object obj = field.get(env);
|
||||||
@@ -88,12 +85,10 @@ public class GitHubTest extends TestCase {
|
|||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
e1.printStackTrace();
|
e1.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGitHubBuilderFromCustomEnvironment() throws IOException {
|
public void testGitHubBuilderFromCustomEnvironment() throws IOException {
|
||||||
|
Map<String, String> props = new HashMap<String, String>();
|
||||||
Map<String, String>props = new HashMap<String, String>();
|
|
||||||
|
|
||||||
props.put("customLogin", "bogusLogin");
|
props.put("customLogin", "bogusLogin");
|
||||||
props.put("customOauth", "bogusOauth");
|
props.put("customOauth", "bogusOauth");
|
||||||
|
|||||||
Reference in New Issue
Block a user