From 5f1b0a354d275bf51fe13168b0044d33916d28ed Mon Sep 17 00:00:00 2001 From: Nick Albion Date: Wed, 18 Sep 2013 09:13:38 +1000 Subject: [PATCH 1/3] Added support for un/protectBranch --- src/main/java/org/gitlab/api/GitlabAPI.java | 10 ++++++++++ .../java/org/gitlab/api/http/GitlabHTTPRequestor.java | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index 8838573e..b4ec290b 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -187,6 +187,16 @@ public GitlabNote createNote(GitlabMergeRequest mergeRequest, String body) throw return dispatch().with("body", body).to(tailUrl, GitlabNote.class); } + + public void protectBranch(GitlabProject project, String branchName) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + "/repository/branches" + "/" + branchName + "/protect"; + retrieve().method("PUT").to(tailUrl, Void.class); + } + + public void unprotectBranch(GitlabProject project, String branchName) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + "/repository/branches" + "/" + branchName + "/unprotect"; + retrieve().method("PUT").to(tailUrl, Void.class); + } private List fetchMergeRequests(String tailUrl) throws IOException { GitlabMergeRequest[] mergeRequests = retrieve().to(tailUrl, GitlabMergeRequest[].class); diff --git a/src/main/java/org/gitlab/api/http/GitlabHTTPRequestor.java b/src/main/java/org/gitlab/api/http/GitlabHTTPRequestor.java index 8baf3638..e06ba4de 100644 --- a/src/main/java/org/gitlab/api/http/GitlabHTTPRequestor.java +++ b/src/main/java/org/gitlab/api/http/GitlabHTTPRequestor.java @@ -113,6 +113,10 @@ public T to(String tailAPIUrl, Class type, T instance) throws IOException if (hasOutput()) { submitData(connection); + } else if( "PUT".equals(_method) ) { + // PUT requires Content-Length: 0 even when there is no body (eg: API for protecting a branch) + connection.setDoOutput(true); + connection.setFixedLengthStreamingMode(0); } try { From 86f6f52cdaef0dfe9b8586cef68af1a19da9fd6a Mon Sep 17 00:00:00 2001 From: Nick Albion Date: Wed, 18 Sep 2013 17:06:36 +1000 Subject: [PATCH 2/3] Added support for getBranch/es --- src/main/java/org/gitlab/api/GitlabAPI.java | 17 ++++++++-- .../org/gitlab/api/models/GitlabBranch.java | 32 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/gitlab/api/models/GitlabBranch.java diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index b4ec290b..48d0f183 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -3,6 +3,7 @@ import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; import org.gitlab.api.http.GitlabHTTPRequestor; +import org.gitlab.api.models.GitlabBranch; import org.gitlab.api.models.GitlabCommit; import org.gitlab.api.models.GitlabMergeRequest; import org.gitlab.api.models.GitlabNote; @@ -188,13 +189,25 @@ public GitlabNote createNote(GitlabMergeRequest mergeRequest, String body) throw return dispatch().with("body", body).to(tailUrl, GitlabNote.class); } + public List getBranches(GitlabProject project) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabBranch.URL; + GitlabBranch[] branches = retrieve().to(tailUrl, GitlabBranch[].class); + return Arrays.asList(branches); + } + + public GitlabBranch getBranch(GitlabProject project, String branchName) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabBranch.URL + branchName; + GitlabBranch branch = retrieve().to(tailUrl, GitlabBranch.class); + return branch; + } + public void protectBranch(GitlabProject project, String branchName) throws IOException { - String tailUrl = GitlabProject.URL + "/" + project.getId() + "/repository/branches" + "/" + branchName + "/protect"; + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabBranch.URL + branchName + "/protect"; retrieve().method("PUT").to(tailUrl, Void.class); } public void unprotectBranch(GitlabProject project, String branchName) throws IOException { - String tailUrl = GitlabProject.URL + "/" + project.getId() + "/repository/branches" + "/" + branchName + "/unprotect"; + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabBranch.URL + branchName + "/unprotect"; retrieve().method("PUT").to(tailUrl, Void.class); } diff --git a/src/main/java/org/gitlab/api/models/GitlabBranch.java b/src/main/java/org/gitlab/api/models/GitlabBranch.java new file mode 100644 index 00000000..0fd6d878 --- /dev/null +++ b/src/main/java/org/gitlab/api/models/GitlabBranch.java @@ -0,0 +1,32 @@ +package org.gitlab.api.models; + +import org.codehaus.jackson.annotate.JsonProperty; + +public class GitlabBranch { + public final static String URL = "/repository/branches/"; + + @JsonProperty("name") + private String _name; + +// @JsonProperty("commit") +// private GitlabCommit _commit; + + @JsonProperty("protected") + private boolean _protected; + + public String getName() { + return _name; + } + + public void setName(String name) { + this._name = name; + } + + public boolean isProtected() { + return _protected; + } + + public void setProtected(boolean isProtected) { + this._protected = isProtected; + } +} From 206753737faadda1077ae01744fa895d7a327903 Mon Sep 17 00:00:00 2001 From: Nick Albion Date: Mon, 30 Sep 2013 14:59:57 +1000 Subject: [PATCH 3/3] Added support for project hooks --- src/main/java/org/gitlab/api/GitlabAPI.java | 29 +++++++++++++ .../gitlab/api/models/GitlabProjectHook.java | 41 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/main/java/org/gitlab/api/models/GitlabProjectHook.java diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index 48d0f183..f967378b 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -8,9 +8,11 @@ import org.gitlab.api.models.GitlabMergeRequest; import org.gitlab.api.models.GitlabNote; import org.gitlab.api.models.GitlabProject; +import org.gitlab.api.models.GitlabProjectHook; import java.io.IOException; import java.net.URL; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; @@ -210,6 +212,33 @@ public void unprotectBranch(GitlabProject project, String branchName) throws IOE String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabBranch.URL + branchName + "/unprotect"; retrieve().method("PUT").to(tailUrl, Void.class); } + + public List getProjectHooks(GitlabProject project) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabProjectHook.URL; + GitlabProjectHook[] hooks = retrieve().to(tailUrl, GitlabProjectHook[].class); + return Arrays.asList(hooks); + } + + public GitlabProjectHook getProjectHook(GitlabProject project, String hookId) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabProjectHook.URL + "/" + hookId; + GitlabProjectHook hook = retrieve().to(tailUrl, GitlabProjectHook.class); + return hook; + } + + public GitlabProjectHook addProjectHook(GitlabProject project, String url) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabProjectHook.URL + "?url=" + URLEncoder.encode(url, "UTF-8"); + return dispatch().to(tailUrl, GitlabProjectHook.class); + } + + public GitlabProjectHook editProjectHook(GitlabProject project, String hookId, String url) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabProjectHook.URL + "/" + hookId + "?url=" + URLEncoder.encode(url, "UTF-8"); + return retrieve().method("PUT").to(tailUrl, GitlabProjectHook.class); + } + + public void deleteProjectHook(GitlabProject project, String hookId) throws IOException { + String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabProjectHook.URL + "/" + hookId; + retrieve().method("DELETE").to(tailUrl, Void.class); + } private List fetchMergeRequests(String tailUrl) throws IOException { GitlabMergeRequest[] mergeRequests = retrieve().to(tailUrl, GitlabMergeRequest[].class); diff --git a/src/main/java/org/gitlab/api/models/GitlabProjectHook.java b/src/main/java/org/gitlab/api/models/GitlabProjectHook.java new file mode 100644 index 00000000..7c1889a8 --- /dev/null +++ b/src/main/java/org/gitlab/api/models/GitlabProjectHook.java @@ -0,0 +1,41 @@ +package org.gitlab.api.models; + +import java.util.Date; + +import org.codehaus.jackson.annotate.JsonProperty; + +public class GitlabProjectHook { + + public final static String URL = "/hooks"; + + private String _id; + private String _url; + + @JsonProperty("created_at") + private Date _createdAt; + + + public String getId() { + return _id; + } + + public void setId(String id) { + _id = id; + } + + public String getUrl() { + return _url; + } + + public void setUrl(String url) { + this._url = url; + } + + public Date getCreatedAt() { + return _createdAt; + } + + public void setCreatedAt(Date createdAt) { + _createdAt = createdAt; + } +}