diff --git a/src/main/java/org/kohsuke/github/GHOrganization.java b/src/main/java/org/kohsuke/github/GHOrganization.java index ae6bc3421..8f0887786 100644 --- a/src/main/java/org/kohsuke/github/GHOrganization.java +++ b/src/main/java/org/kohsuke/github/GHOrganization.java @@ -43,7 +43,7 @@ public class GHOrganization extends GHPerson { * Teams by their names. */ public Map getTeams() throws IOException { - return root.retrieveWithAuth(root.getApiURL("/organizations/"+login+"/teams"),JsonTeams.class).toMap(this); + return root.retrieveWithAuth("/organizations/"+login+"/teams",JsonTeams.class).toMap(this); } public enum Permission { ADMIN, PUSH, PULL } @@ -56,7 +56,7 @@ public class GHOrganization extends GHPerson { for (GHRepository r : repositories) { post.with("team[repo_names][]",r.getOwnerName()+'/'+r.getName()); } - return post.to(root.getApiURL("/organizations/"+login+"/teams"),JsonTeam.class).wrap(this); + return post.to("/organizations/"+login+"/teams",JsonTeam.class).wrap(this); } public GHTeam createTeam(String name, Permission p, GHRepository... repositories) throws IOException { diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 62d77b417..d07ab6029 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -138,7 +138,7 @@ public class GHRepository { private void modifyCollaborators(Collection users, String op) throws IOException { verifyMine(); for (GHUser user : users) { - new Poster(root).withCredential().to(root.getApiURL("/repos/collaborators/"+name+ op +user.getLogin())); + new Poster(root).withCredential().to("/repos/collaborators/"+name+ op +user.getLogin()); } } @@ -147,7 +147,7 @@ public class GHRepository { */ public void delete() throws IOException { Poster poster = new Poster(root).withCredential(); - URL url = root.getApiURL("/repos/delete/" + owner +"/"+name); + String url = "/repos/delete/" + owner +"/"+name; DeleteToken token = poster.to(url, DeleteToken.class); poster.with("delete_token",token.delete_token).to(url); @@ -157,7 +157,7 @@ public class GHRepository { * Forks this repository. */ public GHRepository fork() throws IOException { - return new Poster(root).withCredential().to(root.getApiURL("/repos/fork/" + owner + "/" + name), JsonRepository.class).wrap(root); + return new Poster(root).withCredential().to("/repos/fork/" + owner + "/" + name, JsonRepository.class).wrap(root); } private void verifyMine() throws IOException { diff --git a/src/main/java/org/kohsuke/github/GHTeam.java b/src/main/java/org/kohsuke/github/GHTeam.java index f42949966..e58a98950 100644 --- a/src/main/java/org/kohsuke/github/GHTeam.java +++ b/src/main/java/org/kohsuke/github/GHTeam.java @@ -31,29 +31,29 @@ public class GHTeam { * Retrieves the current members. */ public Set getMembers() throws IOException { - return org.root.retrieveWithAuth(getApiURL("/members"),JsonUsersWithDetails.class).toSet(org.root); + return org.root.retrieveWithAuth("/members",JsonUsersWithDetails.class).toSet(org.root); } /** * Adds a member to the team. */ public void add(GHUser u) throws IOException { - org.root.retrieveWithAuth(getApiURL("/members?name="+u.getLogin()),null, "POST"); + org.root.retrieveWithAuth("/members?name="+u.getLogin(),null, "POST"); } /** * Removes a member to the team. */ public void remove(GHUser u) throws IOException { - org.root.retrieveWithAuth(getApiURL("/members?name="+u.getLogin()),null, "DELETE"); + org.root.retrieveWithAuth("/members?name="+u.getLogin(),null, "DELETE"); } public void add(GHRepository r) throws IOException { - org.root.retrieveWithAuth(getApiURL("/repositories?name="+r.getOwnerName()+'/'+r.getName()),null, "POST"); + org.root.retrieveWithAuth("/repositories?name="+r.getOwnerName()+'/'+r.getName(),null, "POST"); } public void remove(GHRepository r) throws IOException { - org.root.retrieveWithAuth(getApiURL("/repositories?name="+r.getOwnerName()+'/'+r.getName()),null, "DELETE"); + org.root.retrieveWithAuth("/repositories?name="+r.getOwnerName()+'/'+r.getName(),null, "DELETE"); } private URL getApiURL(String tail) throws IOException { diff --git a/src/main/java/org/kohsuke/github/GHUser.java b/src/main/java/org/kohsuke/github/GHUser.java index 205b466c0..178ea0e68 100644 --- a/src/main/java/org/kohsuke/github/GHUser.java +++ b/src/main/java/org/kohsuke/github/GHUser.java @@ -108,14 +108,14 @@ public class GHUser extends GHPerson { * Follow this user. */ public void follow() throws IOException { - new Poster(root).withCredential().to(root.getApiURL("/user/follow/"+login)); + new Poster(root).withCredential().to("/user/follow/"+login); } /** * Unfollow this user. */ public void unfollow() throws IOException { - new Poster(root).withCredential().to(root.getApiURL("/user/unfollow/"+login)); + new Poster(root).withCredential().to("/user/unfollow/"+login); } /** diff --git a/src/main/java/org/kohsuke/github/GitHub.java b/src/main/java/org/kohsuke/github/GitHub.java index 58faa3757..38698a41b 100644 --- a/src/main/java/org/kohsuke/github/GitHub.java +++ b/src/main/java/org/kohsuke/github/GitHub.java @@ -106,19 +106,20 @@ public class GitHub { throw new IllegalStateException("This operation requires a credential but none is given to the GitHub constructor"); } - /*package*/ URL getApiURL(String tail) throws IOException { - return new URL("http://github.com/api/v2/json"+tail); + /*package*/ URL getApiURL(String tailApiUrl) throws IOException { + return new URL("http://github.com/api/v2/json"+tailApiUrl); } - /*package*/ T retrieve(String tail, Class type) throws IOException { - return MAPPER.readValue(getApiURL(tail),type); + /*package*/ T retrieve(String tailApiUrl, Class type) throws IOException { + return MAPPER.readValue(getApiURL(tailApiUrl),type); } - /*package*/ T retrieveWithAuth(URL url, Class type) throws IOException { - return retrieveWithAuth(url,type,"GET"); + /*package*/ T retrieveWithAuth(String tailApiUrl, Class type) throws IOException { + return retrieveWithAuth(tailApiUrl,type,"GET"); } - /*package*/ T retrieveWithAuth(URL url, Class type, String method) throws IOException { - HttpURLConnection uc = (HttpURLConnection) url.openConnection(); + + /*package*/ T retrieveWithAuth(String tailApiUrl, Class type, String method) throws IOException { + HttpURLConnection uc = (HttpURLConnection) getApiURL(tailApiUrl).openConnection(); uc.setRequestProperty("Authorization", "Basic " + encodedAuthorization); uc.setRequestMethod(method); @@ -141,7 +142,7 @@ public class GitHub { public GHUser getUser(String login) throws IOException { GHUser u = users.get(login); if (u==null) { - u = MAPPER.readValue(getApiURL("/user/show/"+login), JsonUser.class).user; + u = retrieve("/user/show/"+login,JsonUser.class).user; u.root = this; users.put(login,u); } @@ -164,7 +165,7 @@ public class GitHub { public GHOrganization getOrganization(String name) throws IOException { GHOrganization o = orgs.get(name); if (o==null) { - o = MAPPER.readValue(getApiURL("/organizations/"+name), JsonOrganization.class).organization; + o = retrieve("/organizations/"+name,JsonOrganization.class).organization; o.root = this; orgs.put(name,o); } @@ -188,7 +189,7 @@ public class GitHub { public GHRepository createRepository(String name, String description, String homepage, boolean isPublic) throws IOException { return new Poster(this).withCredential() .with("name", name).with("description", description).with("homepage", homepage) - .with("public", isPublic ? 1 : 0).to(getApiURL("/repos/create"), JsonRepository.class).wrap(this); + .with("public", isPublic ? 1 : 0).to("/repos/create", JsonRepository.class).wrap(this); } /** @@ -196,7 +197,7 @@ public class GitHub { */ public boolean isCredentialValid() throws IOException { try { - retrieveWithAuth(getApiURL("/user/show"),JsonUser.class); + retrieveWithAuth("/user/show",JsonUser.class); return true; } catch (IOException e) { return false; diff --git a/src/main/java/org/kohsuke/github/Poster.java b/src/main/java/org/kohsuke/github/Poster.java index 4df4aa9d2..6ba219ed2 100644 --- a/src/main/java/org/kohsuke/github/Poster.java +++ b/src/main/java/org/kohsuke/github/Poster.java @@ -72,6 +72,14 @@ class Poster { return this; } + public void to(String tailApiUrl) throws IOException { + to(root.getApiURL(tailApiUrl)); + } + + public T to(String tailApiUrl, Class type) throws IOException { + return to(root.getApiURL(tailApiUrl),type); + } + public void to(URL url) throws IOException { to(url,null); }