mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-11 00:11:25 +00:00
Compare commits
13 Commits
github-api
...
github-api
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9d75913005 | ||
|
|
887ca772e0 | ||
|
|
45286598aa | ||
|
|
2e074b5bc4 | ||
|
|
560e3c257a | ||
|
|
6e0202fa0b | ||
|
|
ef241b1a07 | ||
|
|
f80cb541d5 | ||
|
|
1fe61f72e2 | ||
|
|
bf1b0edfd2 | ||
|
|
f0ab946b88 | ||
|
|
975ef1a43d | ||
|
|
7064865157 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
||||
target
|
||||
.idea/
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
|
||||
22
pom.xml
22
pom.xml
@@ -3,11 +3,11 @@
|
||||
<parent>
|
||||
<groupId>org.kohsuke</groupId>
|
||||
<artifactId>pom</artifactId>
|
||||
<version>3</version>
|
||||
<version>4</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>github-api</artifactId>
|
||||
<version>1.34</version>
|
||||
<version>1.35</version>
|
||||
<name>GitHub API for Java</name>
|
||||
<url>http://github-api.kohsuke.org/</url>
|
||||
<description>GitHub API for Java</description>
|
||||
@@ -44,16 +44,14 @@
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.jvnet.hudson</groupId>
|
||||
<artifactId>htmlunit</artifactId>
|
||||
<version>2.6-hudson-2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<!-- hides JDK DOM classes in Eclipse -->
|
||||
<groupId>xml-apis</groupId>
|
||||
<artifactId>xml-apis</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
<version>2.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
<version>1.7</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.gargoylesoftware.htmlunit.WebClient;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlPage;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
@@ -50,6 +46,30 @@ public class GHOrganization extends GHPerson {
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this organization has the specified user as a member.
|
||||
*/
|
||||
public boolean hasMember(GHUser user) {
|
||||
try {
|
||||
root.retrieve().to("/orgs/" + login + "/members/" + user.getLogin());
|
||||
return true;
|
||||
} catch (IOException ignore) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this organization has the specified user as a public member.
|
||||
*/
|
||||
public boolean hasPublicMember(GHUser user) {
|
||||
try {
|
||||
root.retrieve().to("/orgs/" + login + "/public_members/" + user.getLogin());
|
||||
return true;
|
||||
} catch (IOException ignore) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Publicizes the membership.
|
||||
*/
|
||||
@@ -112,13 +132,12 @@ public class GHOrganization extends GHPerson {
|
||||
* List up repositories that has some open pull requests.
|
||||
*/
|
||||
public List<GHRepository> getRepositoriesWithOpenPullRequests() throws IOException {
|
||||
WebClient wc = root.createWebClient();
|
||||
HtmlPage pg = (HtmlPage)wc.getPage("https://github.com/organizations/"+login+"/dashboard/pulls");
|
||||
List<GHRepository> r = new ArrayList<GHRepository>();
|
||||
for (HtmlAnchor e : pg.getElementById("js-issue-list").<HtmlAnchor>selectNodes(".//UL[@class='smallnav']/LI[not(@class='zeroed')]/A")) {
|
||||
String a = e.getHrefAttribute();
|
||||
String name = a.substring(a.lastIndexOf('/')+1);
|
||||
r.add(getRepository(name));
|
||||
for (GHRepository repository : root.retrieve().to("/orgs/" + login + "/repos", GHRepository[].class)) {
|
||||
List<GHPullRequest> pullRequests = repository.getPullRequests(GHIssueState.OPEN);
|
||||
if (pullRequests.size() > 0) {
|
||||
r.add(repository);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -23,12 +23,6 @@
|
||||
*/
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.gargoylesoftware.htmlunit.WebClient;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlButton;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlCheckBoxInput;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlForm;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlInput;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlPage;
|
||||
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -266,15 +260,10 @@ public class GHRepository {
|
||||
}
|
||||
|
||||
public void setEmailServiceHook(String address) throws IOException {
|
||||
WebClient wc = root.createWebClient();
|
||||
HtmlPage pg = (HtmlPage)wc.getPage(getUrl()+"/admin");
|
||||
HtmlInput email = (HtmlInput)pg.getElementById("email_address");
|
||||
email.setValueAttribute(address);
|
||||
HtmlCheckBoxInput active = (HtmlCheckBoxInput)pg.getElementById("email[active]");
|
||||
active.setChecked(true);
|
||||
|
||||
final HtmlForm f = email.getEnclosingFormOrDie();
|
||||
f.submit((HtmlButton) f.getElementsByTagName("button").get(0));
|
||||
Map<String, String> config = new HashMap<String, String>();
|
||||
config.put("address", address);
|
||||
new Requester(root).method("POST").with("name", "email").with("config", config).with("active", "true")
|
||||
.to(String.format("/repos/%s/%s/hooks", owner.login, name));
|
||||
}
|
||||
|
||||
private void edit(String key, String value) throws IOException {
|
||||
|
||||
@@ -69,6 +69,20 @@ public class GHUser extends GHPerson {
|
||||
return new GHPersonSet<GHUser>(Arrays.asList(wrap(followers,root)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this user belongs to the specified organization.
|
||||
*/
|
||||
public boolean isMemberOf(GHOrganization org) {
|
||||
return org.hasMember(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if this user belongs to the specified organization as a public member.
|
||||
*/
|
||||
public boolean isPublicMemberOf(GHOrganization org) {
|
||||
return org.hasPublicMember(this);
|
||||
}
|
||||
|
||||
/*package*/ static GHUser[] wrap(GHUser[] users, GitHub root) {
|
||||
for (GHUser f : users)
|
||||
f.root = root;
|
||||
|
||||
@@ -23,15 +23,12 @@
|
||||
*/
|
||||
package org.kohsuke.github;
|
||||
|
||||
import com.gargoylesoftware.htmlunit.WebClient;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlForm;
|
||||
import com.gargoylesoftware.htmlunit.html.HtmlPage;
|
||||
import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.codehaus.jackson.map.DeserializationConfig.Feature;
|
||||
import org.codehaus.jackson.map.ObjectMapper;
|
||||
import org.codehaus.jackson.map.introspect.VisibilityChecker.Std;
|
||||
import sun.misc.BASE64Encoder;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -58,8 +55,9 @@ import static org.codehaus.jackson.annotate.JsonAutoDetect.Visibility.*;
|
||||
*/
|
||||
public class GitHub {
|
||||
/*package*/ final String login;
|
||||
|
||||
|
||||
/*package*/ final String encodedAuthorization;
|
||||
/*package*/ final String password;
|
||||
/*package*/ final String apiToken;
|
||||
|
||||
private final Map<String,GHUser> users = new HashMap<String, GHUser>();
|
||||
@@ -69,7 +67,7 @@ public class GitHub {
|
||||
private final String apiUrl;
|
||||
|
||||
private GitHub(String login, String apiToken, String password) {
|
||||
this ("https://api.github.com", login, apiToken, password);
|
||||
this (GITHUB_URL, login, apiToken, password);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,18 +76,17 @@ public class GitHub {
|
||||
* The URL of GitHub (or GitHub enterprise) API endpoint, such as "https://api.github.com" or
|
||||
* "http://ghe.acme.com/api/v3". Note that GitHub Enterprise has <tt>/api/v3</tt> in the URL.
|
||||
* For historical reasons, this parameter still accepts the bare domain name, but that's considered deprecated.
|
||||
* Password is also considered deprecated as it is no longer required for api usage.
|
||||
*/
|
||||
private GitHub(String apiUrl, String login, String apiToken, String password) {
|
||||
if (apiUrl.endsWith("/")) apiUrl = apiUrl.substring(0, apiUrl.length()-1); // normalize
|
||||
this.apiUrl = apiUrl;
|
||||
this.login = login;
|
||||
this.apiToken = apiToken;
|
||||
this.password = password;
|
||||
|
||||
BASE64Encoder enc = new sun.misc.BASE64Encoder();
|
||||
if (apiToken!=null || password!=null) {
|
||||
String userpassword = password==null ? (login + "/token" + ":" + apiToken) : (login + ':'+password);
|
||||
encodedAuthorization = enc.encode(userpassword.getBytes());
|
||||
String authorization = password==null ? (login + "/token" + ":" + apiToken) : (login + ':'+password);
|
||||
encodedAuthorization = new String(Base64.encodeBase64(authorization.getBytes()));
|
||||
} else
|
||||
encodedAuthorization = null;
|
||||
}
|
||||
@@ -97,7 +94,6 @@ public class GitHub {
|
||||
private GitHub (String apiUrl, String oauthAccessToken) throws IOException {
|
||||
|
||||
this.apiUrl = apiUrl;
|
||||
this.password = null;
|
||||
this.encodedAuthorization = null;
|
||||
|
||||
this.oauthAccessToken = oauthAccessToken;
|
||||
@@ -118,7 +114,11 @@ public class GitHub {
|
||||
} finally {
|
||||
IOUtils.closeQuietly(in);
|
||||
}
|
||||
return new GitHub(props.getProperty("login"),props.getProperty("token"),props.getProperty("password"));
|
||||
String oauth = props.getProperty("oauth");
|
||||
if (oauth!=null)
|
||||
return new GitHub(GITHUB_URL,oauth);
|
||||
else
|
||||
return new GitHub(props.getProperty("login"),props.getProperty("token"),props.getProperty("password"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,9 +130,6 @@ public class GitHub {
|
||||
* For historical reasons, this parameter still accepts the bare domain name, but that's considered deprecated.
|
||||
*/
|
||||
public static GitHub connectToEnterprise(String apiUrl, String login, String apiToken) {
|
||||
// not exposing password because the login process still assumes https://github.com/
|
||||
// if we are to fix this, fix that by getting rid of createWebClient() and replace the e-mail service hook
|
||||
// with GitHub API.
|
||||
return new GitHub(apiUrl,login,apiToken,null);
|
||||
}
|
||||
|
||||
@@ -173,7 +170,7 @@ public class GitHub {
|
||||
|
||||
if (tailApiUrl.startsWith("/")) {
|
||||
if ("github.com".equals(apiUrl)) {// backward compatibility
|
||||
return new URL("https://api.github.com" + tailApiUrl);
|
||||
return new URL(GITHUB_URL + tailApiUrl);
|
||||
} else {
|
||||
return new URL(apiUrl + tailApiUrl);
|
||||
}
|
||||
@@ -273,7 +270,7 @@ public class GitHub {
|
||||
* Public events visible to you. Equivalent of what's displayed on https://github.com/
|
||||
*/
|
||||
public List<GHEventInfo> getEvents() throws IOException {
|
||||
// TODO: pagenation
|
||||
// TODO: pagination
|
||||
GHEventInfo[] events = retrieve().to("/events", GHEventInfo[].class);
|
||||
for (GHEventInfo e : events)
|
||||
e.wrapUp(this);
|
||||
@@ -318,18 +315,6 @@ public class GitHub {
|
||||
}
|
||||
}
|
||||
|
||||
WebClient createWebClient() throws IOException {
|
||||
WebClient wc = new WebClient();
|
||||
wc.setJavaScriptEnabled(false);
|
||||
wc.setCssEnabled(false);
|
||||
HtmlPage pg = (HtmlPage)wc.getPage("https://github.com/login");
|
||||
HtmlForm f = pg.getForms().get(0);
|
||||
f.getInputByName("login").setValueAttribute(login);
|
||||
f.getInputByName("password").setValueAttribute(password);
|
||||
f.submit();
|
||||
return wc;
|
||||
}
|
||||
|
||||
/*package*/ static URL parseURL(String s) {
|
||||
try {
|
||||
return s==null ? null : new URL(s);
|
||||
@@ -360,4 +345,6 @@ public class GitHub {
|
||||
MAPPER.setVisibilityChecker(new Std(NONE, NONE, NONE, NONE, ANY));
|
||||
MAPPER.getDeserializationConfig().set(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
|
||||
}
|
||||
|
||||
private static final String GITHUB_URL = "https://api.github.com";
|
||||
}
|
||||
|
||||
@@ -107,6 +107,10 @@ class Requester {
|
||||
return _with(key, value);
|
||||
}
|
||||
|
||||
public Requester with(String key, Map<String, String> value) {
|
||||
return _with(key, value);
|
||||
}
|
||||
|
||||
public Requester _with(String key, Object value) {
|
||||
if (value!=null) {
|
||||
args.add(new Entry(key,value));
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
What is this?
|
||||
|
||||
This library defines an object oriented representation of the GitHub API. The library doesn't yet cover the entirety of the GitHub API, but it's implemented with the right abstractions and libraries to make it very easy to improve the coverage.
|
||||
|
||||
Sample Usage
|
||||
|
||||
------------------
|
||||
GitHub github = GitHub.connect();
|
||||
GHRepository repo = github.createRepository(
|
||||
"new-repository","this is my new repository",
|
||||
"http://www.kohsuke.org/",true/*public*/);
|
||||
repo.addCollaborators(github.getUser("abayer"),github.getUser("rtyler"));
|
||||
repo.delete();
|
||||
------------------
|
||||
|
||||
Credential
|
||||
|
||||
This library allows the caller to supply the credential as parameters, but it also defines a common convention
|
||||
so that applications using this library will look at the consistent location. In this convention, the library
|
||||
looks at "~/.github" property file, which should have the following two values:
|
||||
|
||||
------------------
|
||||
login=kohsuke
|
||||
token=012345678
|
||||
------------------
|
||||
36
src/site/markdown/index.md
Normal file
36
src/site/markdown/index.md
Normal file
@@ -0,0 +1,36 @@
|
||||
What is this?
|
||||
=====
|
||||
|
||||
This library defines an object oriented representation of the GitHub API. By "object oriented" we mean
|
||||
there are classes that correspond to the domain model of GitHub (such as `GHUser` and `GHRepository`),
|
||||
operations that act on them as defined as methods (such as `GHUser.follow()`), and those object references
|
||||
are used in favor of using string handle (such as `GHUser.isMemberOf(GHOrganization)` instead of
|
||||
`GHUser.isMemberOf(String)`)
|
||||
|
||||
There are some corners of the GitHub API that's not yet implemented, but
|
||||
the library is implemented with the right abstractions and libraries to make it very easy to improve the coverage.
|
||||
|
||||
Sample Usage
|
||||
-----
|
||||
|
||||
GitHub github = GitHub.connect();
|
||||
GHRepository repo = github.createRepository(
|
||||
"new-repository","this is my new repository",
|
||||
"http://www.kohsuke.org/",true/*public*/);
|
||||
repo.addCollaborators(github.getUser("abayer"),github.getUser("rtyler"));
|
||||
repo.delete();
|
||||
|
||||
Credential
|
||||
----
|
||||
|
||||
This library allows the caller to supply the credential as parameters, but it also defines a common convention
|
||||
so that applications using this library will look at the consistent location. In this convention, the library
|
||||
looks at `~/.github` property file, which should have the following two values:
|
||||
|
||||
login=kohsuke
|
||||
password=012345678
|
||||
|
||||
Alternatively, you can have just the OAuth token in this file:
|
||||
|
||||
oauth=4d98173f7c075527cb64878561d1fe70
|
||||
|
||||
@@ -36,34 +36,42 @@ import java.util.List;
|
||||
* Unit test for simple App.
|
||||
*/
|
||||
public class AppTest extends TestCase {
|
||||
|
||||
private GitHub gitHub;
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
gitHub = GitHub.connect();
|
||||
}
|
||||
|
||||
public void testRepoCRUD() throws Exception {
|
||||
GitHub hub = GitHub.connect();
|
||||
GHRepository r = hub.createRepository("github-api-test", "a test repository", "http://github-api.kohsuke.org/", true);
|
||||
GHRepository r = gitHub.createRepository("github-api-test", "a test repository", "http://github-api.kohsuke.org/", true);
|
||||
r.enableIssueTracker(false);
|
||||
r.enableDownloads(false);
|
||||
r.enableWiki(false);
|
||||
r.renameTo("github-api-test2");
|
||||
hub.getMyself().getRepository("github-api-test2").delete();
|
||||
gitHub.getMyself().getRepository("github-api-test2").delete();
|
||||
}
|
||||
|
||||
public void testCredentialValid() throws IOException {
|
||||
assertTrue(GitHub.connect().isCredentialValid());
|
||||
assertTrue(gitHub.isCredentialValid());
|
||||
assertFalse(GitHub.connect("totally", "bogus").isCredentialValid());
|
||||
}
|
||||
|
||||
public void testIssueWithNoComment() throws IOException {
|
||||
GHRepository repository = GitHub.connect().getRepository("kohsuke/test");
|
||||
GHRepository repository = gitHub.getRepository("kohsuke/test");
|
||||
List<GHIssueComment> v = repository.getIssue(4).getComments();
|
||||
System.out.println(v);
|
||||
assertTrue(v.isEmpty());
|
||||
|
||||
v = repository.getIssue(3).getComments();
|
||||
System.out.println(v);
|
||||
assertTrue(v.size()==3);
|
||||
assertTrue(v.size() == 3);
|
||||
}
|
||||
|
||||
public void testCreateIssue() throws IOException {
|
||||
GHUser u = GitHub.connect().getUser("kohsuke");
|
||||
GHUser u = gitHub.getUser("kohsuke");
|
||||
GHRepository r = u.getRepository("test");
|
||||
GHMilestone someMilestone = r.listMilestones(GHIssueState.CLOSED).iterator().next();
|
||||
GHIssue o = r.createIssue("testing").body("this is body").assignee(u).label("bug").label("question").milestone(someMilestone).create();
|
||||
@@ -72,26 +80,24 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testRateLimit() throws IOException {
|
||||
System.out.println(GitHub.connect().getRateLimit());
|
||||
System.out.println(gitHub.getRateLimit());
|
||||
}
|
||||
|
||||
public void testMyOrganizations() throws IOException {
|
||||
Map<String, GHOrganization> org = GitHub.connect().getMyOrganizations();
|
||||
Map<String, GHOrganization> org = gitHub.getMyOrganizations();
|
||||
assertFalse(org.keySet().contains(null));
|
||||
System.out.println(org);
|
||||
}
|
||||
|
||||
public void testFetchPullRequest() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
GHRepository r = gh.getOrganization("jenkinsci").getRepository("jenkins");
|
||||
GHRepository r = gitHub.getOrganization("jenkinsci").getRepository("jenkins");
|
||||
assertEquals("master",r.getMasterBranch());
|
||||
r.getPullRequest(1);
|
||||
r.getPullRequests(GHIssueState.OPEN);
|
||||
}
|
||||
|
||||
public void testFetchPullRequestAsList() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
GHRepository r = gh.getOrganization("symfony").getRepository("symfony-docs");
|
||||
GHRepository r = gitHub.getOrganization("symfony").getRepository("symfony-docs");
|
||||
assertEquals("master", r.getMasterBranch());
|
||||
PagedIterable<GHPullRequest> i = r.listPullRequests(GHIssueState.CLOSED);
|
||||
List<GHPullRequest> prs = i.asList();
|
||||
@@ -100,19 +106,17 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testRepoPermissions() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
GHRepository r = gh.getOrganization("jenkinsci").getRepository("jenkins");
|
||||
GHRepository r = gitHub.getOrganization("jenkinsci").getRepository("jenkins");
|
||||
assertTrue(r.hasPullAccess());
|
||||
|
||||
r = gh.getOrganization("github").getRepository("tire");
|
||||
r = gitHub.getOrganization("github").getRepository("tire");
|
||||
assertFalse(r.hasAdminAccess());
|
||||
}
|
||||
|
||||
public void testGetMyself() throws Exception {
|
||||
GitHub hub = GitHub.connect();
|
||||
GHMyself me = hub.getMyself();
|
||||
GHMyself me = gitHub.getMyself();
|
||||
System.out.println(me);
|
||||
GHUser u = hub.getUser("kohsuke2");
|
||||
GHUser u = gitHub.getUser("kohsuke2");
|
||||
System.out.println(u);
|
||||
for (List<GHRepository> lst : me.iterateRepositories(100)) {
|
||||
for (GHRepository r : lst) {
|
||||
@@ -122,36 +126,30 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testPublicKeys() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
List<GHKey> keys = gh.getMyself().getPublicKeys();
|
||||
List<GHKey> keys = gitHub.getMyself().getPublicKeys();
|
||||
System.out.println(keys);
|
||||
}
|
||||
|
||||
public void tryOrgFork() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
gh.getUser("kohsuke").getRepository("rubywm").forkTo(gh.getOrganization("jenkinsci"));
|
||||
gitHub.getUser("kohsuke").getRepository("rubywm").forkTo(gitHub.getOrganization("jenkinsci"));
|
||||
}
|
||||
|
||||
public void tryGetTeamsForRepo() throws Exception {
|
||||
GitHub gh = GitHub.connect();
|
||||
Set<GHTeam> o = gh.getOrganization("jenkinsci").getRepository("rubywm").getTeams();
|
||||
Set<GHTeam> o = gitHub.getOrganization("jenkinsci").getRepository("rubywm").getTeams();
|
||||
System.out.println(o);
|
||||
}
|
||||
|
||||
public void testMembership() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
Set<String> members = gitHub.getOrganization("jenkinsci").getRepository("violations-plugin").getCollaboratorNames();
|
||||
System.out.println(members.contains("kohsuke"));
|
||||
}
|
||||
|
||||
public void testMemberOrgs() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
Set<GHOrganization> o = gitHub.getUser("kohsuke").getOrganizations();
|
||||
System.out.println(o);
|
||||
}
|
||||
|
||||
public void testCommit() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHCommit commit = gitHub.getUser("jenkinsci").getRepository("jenkins").getCommit("08c1c9970af4d609ae754fbe803e06186e3206f7");
|
||||
System.out.println(commit);
|
||||
assertEquals(1, commit.getParents().size());
|
||||
@@ -160,11 +158,10 @@ public class AppTest extends TestCase {
|
||||
File f = commit.getFiles().get(0);
|
||||
assertEquals(48,f.getLinesChanged());
|
||||
assertEquals("modified",f.getStatus());
|
||||
assertEquals("changelog.html",f.getFileName());
|
||||
assertEquals("changelog.html", f.getFileName());
|
||||
}
|
||||
|
||||
public void testListCommits() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
List<String> sha1 = new ArrayList<String>();
|
||||
for (GHCommit c : gitHub.getUser("kohsuke").getRepository("empty-commit").listCommits()) {
|
||||
System.out.println(c.getSHA1());
|
||||
@@ -175,14 +172,12 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testBranches() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
Map<String,GHBranch> b =
|
||||
gitHub.getUser("jenkinsci").getRepository("jenkins").getBranches();
|
||||
System.out.println(b);
|
||||
}
|
||||
|
||||
public void testCommitComment() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHRepository r = gitHub.getUser("jenkinsci").getRepository("jenkins");
|
||||
PagedIterable<GHCommitComment> comments = r.listCommitComments();
|
||||
List<GHCommitComment> batch = comments.iterator().nextPage();
|
||||
@@ -193,7 +188,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testCreateCommitComment() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHCommit commit = gitHub.getUser("kohsuke").getRepository("sandbox-ant").getCommit("8ae38db0ea5837313ab5f39d43a6f73de3bd9000");
|
||||
GHCommitComment c = commit.createComment("[testing](http://kohsuse.org/)");
|
||||
System.out.println(c);
|
||||
@@ -203,7 +197,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void tryHook() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHRepository r = gitHub.getMyself().getRepository("test2");
|
||||
GHHook hook = r.createWebHook(new URL("http://www.google.com/"));
|
||||
System.out.println(hook);
|
||||
@@ -213,7 +206,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testEventApi() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
for (GHEventInfo ev : gitHub.getEvents()) {
|
||||
System.out.println(ev);
|
||||
if (ev.getType()==GHEvent.PULL_REQUEST) {
|
||||
@@ -225,10 +217,9 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testApp() throws IOException {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
System.out.println(gitHub.getMyself().getEmails());
|
||||
|
||||
// GHRepository r = gitHub.connect().getOrganization("jenkinsci").createRepository("kktest4", "Kohsuke's test", "http://kohsuke.org/", "Everyone", true);
|
||||
// GHRepository r = gitHub.getOrganization("jenkinsci").createRepository("kktest4", "Kohsuke's test", "http://kohsuke.org/", "Everyone", true);
|
||||
// r.fork();
|
||||
|
||||
// tryDisablingIssueTrackers(gitHub);
|
||||
@@ -255,7 +246,7 @@ public class AppTest extends TestCase {
|
||||
// t.remove(gitHub.getMyself());
|
||||
// System.out.println(t.getMembers());
|
||||
|
||||
// GHRepository r = GitHub.connect().getOrganization("HudsonLabs").createRepository("auto-test", "some description", "http://kohsuke.org/", "Plugin Developers", true);
|
||||
// GHRepository r = gitHub.getOrganization("HudsonLabs").createRepository("auto-test", "some description", "http://kohsuke.org/", "Plugin Developers", true);
|
||||
|
||||
// r.
|
||||
// GitHub hub = GitHub.connectAnonymously();
|
||||
@@ -314,7 +305,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testOrgRepositories() throws IOException {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHOrganization j = gitHub.getOrganization("jenkinsci");
|
||||
long start = System.currentTimeMillis();
|
||||
Map<String, GHRepository> repos = j.getRepositories();
|
||||
@@ -323,7 +313,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testOrganization() throws IOException {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHOrganization j = gitHub.getOrganization("jenkinsci");
|
||||
GHTeam t = j.getTeams().get("Core Developers");
|
||||
|
||||
@@ -333,7 +322,6 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testCommitStatus() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHRepository r = gitHub.getUser("kohsuke").getRepository("test");
|
||||
GHCommitStatus state;
|
||||
// state = r.createCommitStatus("edacdd76b06c5f3f0697a22ca75803169f25f296", GHCommitState.FAILURE, "http://jenkins-ci.org/", "oops!");
|
||||
@@ -346,10 +334,21 @@ public class AppTest extends TestCase {
|
||||
}
|
||||
|
||||
public void testPullRequestPopulate() throws Exception {
|
||||
GitHub gitHub = GitHub.connect();
|
||||
GHRepository r = gitHub.getUser("kohsuke").getRepository("github-api");
|
||||
GHPullRequest p = r.getPullRequest(17);
|
||||
GHUser u = p.getUser();
|
||||
assertNotNull(u.getName());
|
||||
}
|
||||
|
||||
public void testCheckMembership() throws Exception {
|
||||
GHOrganization j = gitHub.getOrganization("jenkinsci");
|
||||
GHUser kohsuke = gitHub.getUser("kohsuke");
|
||||
GHUser a = gitHub.getUser("a");
|
||||
|
||||
assertTrue(j.hasMember(kohsuke));
|
||||
assertFalse(j.hasMember(a));
|
||||
|
||||
assertTrue(j.hasPublicMember(kohsuke));
|
||||
assertFalse(j.hasPublicMember(a));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user