diff --git a/pom.xml b/pom.xml index ae6d3dedfd..a8b2e87842 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.24 + 1.25 GitHub API for Java http://github-api.kohsuke.org/ GitHub API for Java diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index 92fafaf319..8af52fc0af 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -43,15 +43,6 @@ public Map getTeams() throws IOException { return root.retrieveWithAuth("/organizations/"+login+"/teams",JsonTeams.class).toMap(this); } - @Override - public GHRepository getRepository(String name) throws IOException { - try { - return root.retrieveWithAuth3("/repos/" + login + '/' + name, GHRepository.class).wrap(root); - } catch (FileNotFoundException e) { - return null; - } - } - /** * Publicizes the membership. */ diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java index 70ba8f27d0..1c345462c3 100644 --- a/src/main/java/org/kohsuke/github/GHPerson.java +++ b/src/main/java/org/kohsuke/github/GHPerson.java @@ -87,7 +87,7 @@ public void remove() { */ public GHRepository getRepository(String name) throws IOException { try { - return root.retrieve3("/repos/" + login + '/' + name, GHRepository.class).wrap(root); + return root.retrieveWithAuth3("/repos/" + login + '/' + name, GHRepository.class).wrap(root); } catch (FileNotFoundException e) { return null; } diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 909554a6b0..5516382317 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -72,9 +72,16 @@ public class GHRepository { private String created_at, pushed_at; private Map milestones = new HashMap(); - private String master_branch; + private String master_branch,language; private Map commits = new HashMap(); + private GHRepoPermission permissions; + + private static class GHRepoPermission { + boolean pull,push,admin; + } + + public String getDescription() { return description; } @@ -113,6 +120,25 @@ public String getName() { return name; } + public boolean hasPullAccess() { + return permissions!=null && permissions.pull; + } + + public boolean hasPushAccess() { + return permissions!=null && permissions.push; + } + + public boolean hasAdminAccess() { + return permissions!=null && permissions.admin; + } + + /** + * Gets the primary programming language. + */ + public String getLanguage() { + return language; + } + public GHUser getOwner() throws IOException { return root.getUser(owner.login); // because 'owner' isn't fully populated } diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 71e869fc8d..75d40d1712 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -43,6 +43,15 @@ public void testFetchPullRequest() throws Exception { r.getPullRequest(1); r.getPullRequests(GHIssueState.OPEN); } + + public void testRepoPermissions() throws Exception { + GitHub gh = GitHub.connect(); + GHRepository r = gh.getOrganization("jenkinsci").getRepository("jenkins"); + assertTrue(r.hasPullAccess()); + + r = gh.getOrganization("github").getRepository("tire"); + assertFalse(r.hasAdminAccess()); + } public void tryGetMyself() throws Exception { GitHub hub = GitHub.connect();