diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index aba2feb18..421a7de1d 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -190,6 +190,26 @@ public class GHRepository { throw new IllegalArgumentException("Either you don't have the privilege to fork into "+org.getLogin()+" or there's a bug in HTML scraping"); } + /** + * Rename this repository. + */ + public void renameTo(String newName) throws IOException { + WebClient wc = root.createWebClient(); + HtmlPage pg = (HtmlPage)wc.getPage(getUrl()+"/admin"); + for (HtmlForm f : pg.getForms()) { + if (!f.getActionAttribute().endsWith("/rename")) continue; + try { + f.getInputByName("name").setValueAttribute(newName); + f.submit((HtmlButton)f.getElementsByTagName("button").get(0)); + name = newName; + } catch (ElementNotFoundException e) { + // continue + } + } + + throw new IllegalArgumentException("Either you don't have the privilege to rename "+owner+'/'+name+" or there's a bug in HTML scraping"); + } + private void verifyMine() throws IOException { if (!root.login.equals(owner)) diff --git a/src/test/java/org/kohsuke/AppTest.java b/src/test/java/org/kohsuke/AppTest.java index 1fc20e1b6..fb0fe81f1 100644 --- a/src/test/java/org/kohsuke/AppTest.java +++ b/src/test/java/org/kohsuke/AppTest.java @@ -23,6 +23,7 @@ public class AppTest extends TestCase { public void testApp() throws IOException { GitHub gitHub = GitHub.connect(); +// tryRenaming(gitHub); // tryOrgFork(gitHub); // testOrganization(gitHub); @@ -45,6 +46,10 @@ public class AppTest extends TestCase { // System.out.println(hub.getUser("kohsuke").getRepository("hudson").getCollaborators()); } + private void tryRenaming(GitHub gitHub) throws IOException { + gitHub.getUser("kohsuke").getRepository("test").renameTo("test2"); + } + private void tryOrgFork(GitHub gitHub) throws IOException { GHOrganization o = gitHub.getOrganization("HudsonLabs"); System.out.println(gitHub.getUser("rtyler").getRepository("memcache-ada").forkTo(o).getUrl());