org.gitlab.api.GitlabAPI Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-gitlab-api Show documentation
Show all versions of java-gitlab-api Show documentation
A Java wrapper for the Gitlab Git Hosting Server API
package org.gitlab.api;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.codehaus.jackson.map.ObjectMapper;
import org.gitlab.api.http.GitlabHTTPRequestor;
import org.gitlab.api.models.GitlabCommit;
import org.gitlab.api.models.GitlabMergeRequest;
import org.gitlab.api.models.GitlabNote;
import org.gitlab.api.models.GitlabProject;
/**
* Gitlab API Wrapper class
*
* @author @timols
*/
public class GitlabAPI {
private final String _hostUrl;
private final String _apiToken;
private boolean _ignoreCertificateErrors = false;
private static final String API_NAMESPACE = "/api/v3";
public static final ObjectMapper MAPPER = new ObjectMapper();
private GitlabAPI(String hostUrl, String apiToken) {
_hostUrl = hostUrl.endsWith("/") ? hostUrl.replaceAll("/$", "") : hostUrl;
_apiToken = apiToken;
}
public static GitlabAPI connect(String hostUrl, String apiToken) {
return new GitlabAPI(hostUrl, apiToken);
}
public GitlabAPI ignoreCertificateErrors(boolean ignoreCertificateErrors) {
_ignoreCertificateErrors = ignoreCertificateErrors;
return this;
}
public GitlabHTTPRequestor retrieve() {
return new GitlabHTTPRequestor(this);
}
public GitlabHTTPRequestor dispatch() {
return new GitlabHTTPRequestor(this).method("POST");
}
public boolean isIgnoreCertificateErrors() {
return _ignoreCertificateErrors;
}
public URL getAPIUrl(String tailAPIUrl) throws IOException {
if (_apiToken != null) {
tailAPIUrl = tailAPIUrl + (tailAPIUrl.indexOf('?') > 0 ? '&' : '?') + "private_token=" + _apiToken;
}
if (!tailAPIUrl.startsWith("/")) {
tailAPIUrl = "/" + tailAPIUrl;
}
return new URL(_hostUrl + API_NAMESPACE + tailAPIUrl);
}
public URL getUrl(String tailAPIUrl) throws IOException {
if (!tailAPIUrl.startsWith("/")) {
tailAPIUrl = "/" + tailAPIUrl;
}
return new URL(_hostUrl + tailAPIUrl);
}
public GitlabProject getProject(Integer projectId) throws IOException {
String tailUrl = GitlabProject.URL + "/" + projectId;
return retrieve().to(tailUrl, GitlabProject.class);
}
public List getOpenMergeRequests(GitlabProject project) throws IOException {
List allMergeRequests = getMergeRequests(project);
List openMergeRequests = new ArrayList();
for (GitlabMergeRequest mergeRequest : allMergeRequests) {
if (mergeRequest.isClosed()) {
continue;
}
openMergeRequests.add(mergeRequest);
}
return openMergeRequests;
}
public List getMergeRequests(Integer projectId) throws IOException {
String tailUrl = GitlabProject.URL + "/" + projectId + GitlabMergeRequest.URL;
return fetchMergeRequests(tailUrl);
}
public List getMergeRequests(GitlabProject project) throws IOException {
String tailUrl = GitlabProject.URL + "/" + project.getId() + GitlabMergeRequest.URL;
return fetchMergeRequests(tailUrl);
}
public GitlabMergeRequest getMergeRequest(GitlabProject project, Integer mergeRequestId) throws IOException {
String tailUrl = GitlabProject.URL + "/" + project.getId() + "/merge_request/" + mergeRequestId;
return retrieve().to(tailUrl, GitlabMergeRequest.class);
}
public List getNotes(GitlabMergeRequest mergeRequest) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
GitlabMergeRequest.URL + "/" + mergeRequest.getId() +
GitlabNote.URL;
GitlabNote[] notes = retrieve().to(tailUrl, GitlabNote[].class);
return Arrays.asList(notes);
}
public List getCommits(GitlabMergeRequest mergeRequest) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
"/repository" + GitlabCommit.URL + "?ref_name=" + mergeRequest.getSourceBranch();
GitlabCommit[] commits = retrieve().to(tailUrl, GitlabCommit[].class);
return Arrays.asList(commits);
}
public GitlabNote createNote(GitlabMergeRequest mergeRequest, String body) throws IOException {
String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() +
GitlabMergeRequest.URL + "/" + mergeRequest.getId() + GitlabNote.URL;
return dispatch().with("body", body).to(tailUrl, GitlabNote.class);
}
private List fetchMergeRequests(String tailUrl) throws IOException {
GitlabMergeRequest[] mergeRequests = retrieve().to(tailUrl, GitlabMergeRequest[].class);
return Arrays.asList(mergeRequests);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy