diff --git a/src/main/java/org/gitlab/api/GitlabAPI.java b/src/main/java/org/gitlab/api/GitlabAPI.java index c0c88fa7..7c555e07 100644 --- a/src/main/java/org/gitlab/api/GitlabAPI.java +++ b/src/main/java/org/gitlab/api/GitlabAPI.java @@ -5,6 +5,7 @@ import org.gitlab.api.http.GitlabHTTPRequestor; import org.gitlab.api.http.Query; import org.gitlab.api.models.*; +import org.gitlab.api.query.CommitsQuery; import org.gitlab.api.query.PaginationQuery; import org.gitlab.api.query.PipelinesQuery; import org.gitlab.api.query.ProjectsQuery; @@ -253,7 +254,7 @@ public GitlabUser getUserViaSudo(String username) throws IOException { * @param can_create_group Can Create Group * @param skip_confirmation Skip Confirmation * @param external External - * @return A GitlabUser + * @return A GitlabUser * @throws IOException on gitlab api call error * @see http://doc.gitlab.com/ce/api/users.html */ @@ -508,7 +509,7 @@ public GitlabGroup getGroup(String path) throws IOException { public GitlabGroup getGroup(String path, boolean withProjects) throws IOException { String tailUrl = GitlabGroup.URL + "/" + URLEncoder.encode(path, "UTF-8"); Query query = new Query() - .append(PARAM_WITH_PROJECTS, "" + withProjects); + .append(PARAM_WITH_PROJECTS, "" + withProjects); return retrieve().to(tailUrl + query.toString(), GitlabGroup.class); } @@ -684,7 +685,7 @@ public GitlabGroup createGroup(String name, String path, String ldapCn, GitlabAc return dispatch().to(tailUrl, GitlabGroup.class); } - /** + /** * Creates a Group * * @param group The gitlab Group object @@ -1305,7 +1306,7 @@ public GitlabProject createProject(GitlabProject project) throws IOException { .appendIf("repository_storage", project.getRepositoryStorage()) .appendIf("approvals_before_merge", project.getApprovalsBeforeMerge()) .appendIf("printing_merge_request_link_enabled", project.isPrintingMergeRequestLinkEnabled()) - .appendIf("initialize_with_readme",project.isInitializeWithReadme()); + .appendIf("initialize_with_readme", project.isInitializeWithReadme()); GitlabNamespace namespace = project.getNamespace(); if (namespace != null) { @@ -1461,9 +1462,9 @@ public GitlabProject createUserProject(Integer userId, String name, String descr */ public GitlabProject createFork(String namespace, Integer projectId, String path, String name) throws IOException { Query query = new Query() - .appendIf("namespace", namespace) - .appendIf("path", path) - .appendIf("name", name); + .appendIf("namespace", namespace) + .appendIf("path", path) + .appendIf("name", name); String tailUrl = GitlabProject.URL + "/" + projectId + "/fork" + query.toString(); return dispatch().to(tailUrl, GitlabProject.class); } @@ -1658,8 +1659,8 @@ public GitlabMergeRequestApprovals setMergeRequestApprovals(GitlabMergeRequest m String tailUrl = GitlabProject.URL + "/" + sanitizeProjectId(mr.getProjectId()) + GitlabMergeRequest.URL + "/" + mr.getIid() + GitlabMergeRequestApprovals.URL; return dispatch() - .with("approvals_required", count) - .to(tailUrl, GitlabMergeRequestApprovals.class); + .with("approvals_required", count) + .to(tailUrl, GitlabMergeRequestApprovals.class); } /** @@ -1674,9 +1675,9 @@ public GitlabMergeRequestApprovals setMergeRequestApprovers(GitlabMergeRequest m String tailUrl = GitlabProject.URL + "/" + sanitizeProjectId(mr.getProjectId()) + GitlabMergeRequest.URL + "/" + mr.getIid() + GitlabMergeRequestApprovals.APPROVERS_URL; return put() - .with("approver_ids", userApproverIds) - .with("approver_group_ids", groupApproverIds) - .to(tailUrl, GitlabMergeRequestApprovals.class); + .with("approver_ids", userApproverIds) + .with("approver_group_ids", groupApproverIds) + .to(tailUrl, GitlabMergeRequestApprovals.class); } /** @@ -1720,21 +1721,21 @@ public GitlabMergeRequest getMergeRequestByIid(Serializable projectId, Integer m * @throws IOException on gitlab api call error */ public GitlabMergeRequest getMergeRequestChanges(Serializable projectId, - Integer mergeRequestIid) throws IOException { + Integer mergeRequestIid) throws IOException { String tailUrl = GitlabProject.URL + "/" + sanitizeProjectId(projectId) + GitlabMergeRequest.URL + "/" + mergeRequestIid + "/changes"; return retrieve().to(tailUrl, GitlabMergeRequest.class); } public GitlabMergeRequest getMergeRequest(Serializable projectId, - Integer mergeRequestIid) throws IOException { + Integer mergeRequestIid) throws IOException { String tailUrl = GitlabProject.URL + "/" + sanitizeProjectId(projectId) + GitlabMergeRequest.URL + "/" + mergeRequestIid; return retrieve().to(tailUrl, GitlabMergeRequest.class); } public GitlabMergeRequest getMergeRequest(GitlabProject project, - Integer mergeRequestIid) throws IOException { + Integer mergeRequestIid) throws IOException { return getMergeRequest(project.getId(), mergeRequestIid); } @@ -1826,7 +1827,7 @@ public GitlabMergeRequest acceptMergeRequest(Serializable projectId, Integer mer * @throws IOException on gitlab api call error */ public GitlabNote getNote(GitlabMergeRequest mergeRequest, - Integer noteId) throws IOException { + Integer noteId) throws IOException { String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() + GitlabMergeRequest.URL + "/" + mergeRequest.getIid() + GitlabNote.URL + "/" + noteId; @@ -1862,7 +1863,7 @@ public List getAllNotes(GitlabMergeRequest mergeRequest) { * @throws IOException on a GitLab api call error */ public GitlabDiscussion getDiscussion(GitlabMergeRequest mergeRequest, - int discussionId) throws IOException { + int discussionId) throws IOException { String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() + GitlabMergeRequest.URL + "/" + mergeRequest.getIid() + GitlabDiscussion.URL + "/" + discussionId; @@ -1900,8 +1901,8 @@ public List getDiscussions(GitlabMergeRequest mergeRequest) th * @throws IOException on a GitLab api call error */ public GitlabDiscussion createDiscussion(GitlabMergeRequest mergeRequest, - String body, String positionBaseSha, String positionStartSha, - String positionHeadSha) throws IOException { + String body, String positionBaseSha, String positionStartSha, + String positionHeadSha) throws IOException { return createTextDiscussion(mergeRequest, body, null, positionBaseSha, positionStartSha, positionHeadSha, null, null, null, null); @@ -1926,9 +1927,9 @@ public GitlabDiscussion createDiscussion(GitlabMergeRequest mergeRequest, * @throws IOException on a GitLab api call error */ public GitlabDiscussion createTextDiscussion(GitlabMergeRequest mergeRequest, - String body, String position, String positionBaseSha, String positionStartSha, - String positionHeadSha, String positionNewPath, Integer positionNewLine, - String positionOldPath, Integer positionOldLine) throws IOException { + String body, String position, String positionBaseSha, String positionStartSha, + String positionHeadSha, String positionNewPath, Integer positionNewLine, + String positionOldPath, Integer positionOldLine) throws IOException { checkRequiredCreateDiscussionArguments(body, positionBaseSha, positionStartSha, positionHeadSha); Query query = new Query() .append("body", body) @@ -1975,7 +1976,7 @@ public GitlabDiscussion createImageDiscussion( String positionHeadSha, String positionNewPath, String positionOldPath, Integer positionWidth, Integer positionHeight, Integer positionX, Integer positionY - ) throws IOException { + ) throws IOException { checkRequiredCreateDiscussionArguments(body, positionBaseSha, positionStartSha, positionHeadSha); Query query = new Query() .append("body", body) @@ -2008,7 +2009,7 @@ public GitlabDiscussion createImageDiscussion( * @param positionHeadSha The SHA referencing HEAD of this merge request */ private void checkRequiredCreateDiscussionArguments(String body, - String positionBaseSha, String positionStartSha, String positionHeadSha) { + String positionBaseSha, String positionStartSha, String positionHeadSha) { if (body == null || body.isEmpty()) { throw new IllegalArgumentException("Missing required argument 'body'!"); } else if (positionBaseSha == null || positionBaseSha.isEmpty()) { @@ -2031,7 +2032,7 @@ private void checkRequiredCreateDiscussionArguments(String body, * @throws IOException on a GitLab api call error */ public GitlabDiscussion resolveDiscussion(GitlabMergeRequest mergeRequest, - int discussionId, boolean resolved) throws IOException { + int discussionId, boolean resolved) throws IOException { String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() + GitlabMergeRequest.URL + "/" + mergeRequest.getIid() + GitlabDiscussion.URL + "/" + discussionId; @@ -2051,7 +2052,7 @@ public GitlabDiscussion resolveDiscussion(GitlabMergeRequest mergeRequest, * @throws IOException on a GitLab api call error */ public GitlabNote addDiscussionNote(GitlabMergeRequest mergeRequest, - int discussionId, String body) throws IOException { + int discussionId, String body) throws IOException { String tailUrl = GitlabProject.URL + "/" + mergeRequest.getProjectId() + GitlabMergeRequest.URL + "/" + mergeRequest.getIid() + GitlabDiscussion.URL + "/" + discussionId + @@ -2072,7 +2073,7 @@ public GitlabNote addDiscussionNote(GitlabMergeRequest mergeRequest, * @throws IOException on a GitLab api call error */ public GitlabNote modifyDiscussionNote(GitlabMergeRequest mergeRequest, int discussionId, - int noteId, String body, Boolean resolved) throws IOException { + int noteId, String body, Boolean resolved) throws IOException { boolean bodyHasValue = false; if (body != null && !body.isEmpty()) { bodyHasValue = true; @@ -2134,7 +2135,7 @@ public List getCommits(GitlabMergeRequest mergeRequest, Pagination } public List getLastCommits(Serializable projectId) throws IOException { - return getCommits(projectId, null, null); + return getLastCommits(projectId, null); } public List getLastCommits(Serializable projectId, String branchOrTag) throws IOException { @@ -2165,9 +2166,20 @@ public List getCommits(Serializable projectId, Pagination paginati return Arrays.asList(commits); } + public List getCommits(Serializable projectId, Pagination pagination, CommitsQuery commitsQuery) throws IOException { + if (pagination != null) { + commitsQuery.mergeWith(pagination.asQuery()); + } + + String tailUrl = GitlabProject.URL + "/" + sanitizeProjectId(projectId) + + "/repository" + GitlabCommit.URL + commitsQuery.toString(); + return retrieve().getAll(tailUrl, GitlabCommit[].class); + } + + // gets all commits for a project public List getAllCommits(Serializable projectId) throws IOException { - return getAllCommits(projectId, null, null); + return getAllCommits(projectId, null); } // gets all commits for a project @@ -2572,14 +2584,14 @@ public GitlabProjectHook addProjectHook(Serializable projectId, String url, bool public GitlabProjectHook addProjectHook(Serializable projectId, String url, GitlabProjectHook hook, String token) throws IOException { return this.addProjectHook(projectId, url, hook.getPushEvents(), hook.getIssueEvents(), hook.isMergeRequestsEvents(), - hook.isNoteEvents(), hook.isTagPushEvents(), hook.isSslVerificationEnabled(), hook.isJobEvents(), - hook.isPipelineEvents(), hook.isWikiPageEvents(), token); + hook.isNoteEvents(), hook.isTagPushEvents(), hook.isSslVerificationEnabled(), hook.isJobEvents(), + hook.isPipelineEvents(), hook.isWikiPageEvents(), token); } public GitlabProjectHook editProjectHook(GitlabProject project, String hookId, String url, - boolean pushEvents, boolean issuesEvents, boolean mergeRequestEvents, boolean noteEvents, - boolean tagPushEvents, boolean sslVerification, boolean jobEvents, boolean pipelineEvents, - boolean wikiPageEvents, String token) throws IOException { + boolean pushEvents, boolean issuesEvents, boolean mergeRequestEvents, boolean noteEvents, + boolean tagPushEvents, boolean sslVerification, boolean jobEvents, boolean pipelineEvents, + boolean wikiPageEvents, String token) throws IOException { Query query = new Query(); query.append("url", url); query.append("push_events", String.valueOf(pushEvents)); @@ -2598,9 +2610,9 @@ public GitlabProjectHook editProjectHook(GitlabProject project, String hookId, S public GitlabProjectHook editProjectHook(GitlabProject project, GitlabProjectHook projectHook, String token) throws IOException { return editProjectHook(project, projectHook.getId(), projectHook.getUrl(), projectHook.getPushEvents(), - projectHook.getIssueEvents(), projectHook.isMergeRequestsEvents(), projectHook.isNoteEvents(), - projectHook.isTagPushEvents(), projectHook.isSslVerificationEnabled(), projectHook.isJobEvents(), - projectHook.isWikiPageEvents(), projectHook.isPipelineEvents(), token); + projectHook.getIssueEvents(), projectHook.isMergeRequestsEvents(), projectHook.isNoteEvents(), + projectHook.isTagPushEvents(), projectHook.isSslVerificationEnabled(), projectHook.isJobEvents(), + projectHook.isWikiPageEvents(), projectHook.isPipelineEvents(), token); } public void deleteProjectHook(GitlabProjectHook hook) throws IOException { @@ -4166,9 +4178,9 @@ public List getEvents(GitlabProject project, GitlabDate before, GitlabDate after, SortOrder sortOrder) - throws IOException { + throws IOException { return getEvents(project, action, targetType, before, - after, sortOrder, new Pagination()); + after, sortOrder, new Pagination()); } /** @@ -4188,9 +4200,9 @@ public List getEvents(GitlabProject project, GitlabDate after, SortOrder sortOrder, Pagination pagination) - throws IOException { + throws IOException { return getProjectEvents(project.getId(), action, targetType, before, - after, sortOrder, pagination); + after, sortOrder, pagination); } /** @@ -4209,9 +4221,9 @@ public List getProjectEvents(Serializable projectId, GitlabDate before, GitlabDate after, SortOrder sort) - throws IOException { + throws IOException { return getProjectEvents(projectId, action, targetType, before, - after, sort, new Pagination()); + after, sort, new Pagination()); } /** @@ -4231,7 +4243,7 @@ public List getProjectEvents(Serializable projectId, GitlabDate after, SortOrder sort, Pagination pagination) - throws IOException { + throws IOException { final Query query = new Query(); query.appendIf("action", action); @@ -4245,10 +4257,10 @@ public List getProjectEvents(Serializable projectId, } StringBuilder tailUrl = new StringBuilder(GitlabProject.URL) - .append("/") - .append(sanitizeProjectId(projectId)) - .append(GitlabEvent.URL) - .append(query.toString()); + .append("/") + .append(sanitizeProjectId(projectId)) + .append(GitlabEvent.URL) + .append(query.toString()); return Arrays.asList(retrieve().method(GET).to(tailUrl.toString(), GitlabEvent[].class)); } diff --git a/src/main/java/org/gitlab/api/models/GitlabCommit.java b/src/main/java/org/gitlab/api/models/GitlabCommit.java index f99bc32f..a50fc666 100644 --- a/src/main/java/org/gitlab/api/models/GitlabCommit.java +++ b/src/main/java/org/gitlab/api/models/GitlabCommit.java @@ -34,6 +34,9 @@ public class GitlabCommit { @JsonProperty("parent_ids") private List parentIds; + @JsonProperty("stats") + private GitlabCommitStats stats; + @JsonProperty("last_pipeline") private GitlabPipeline lastPipeline; @@ -117,6 +120,14 @@ public void setAuthoredDate(Date authoredDate) { this.authoredDate = authoredDate; } + public GitlabCommitStats getStats() { + return stats; + } + + public void setStats(GitlabCommitStats stats) { + this.stats = stats; + } + @Override public boolean equals(Object obj) { // we say that two commit objects are equal iff they have the same ID diff --git a/src/main/java/org/gitlab/api/models/GitlabCommitStats.java b/src/main/java/org/gitlab/api/models/GitlabCommitStats.java new file mode 100644 index 00000000..3165afdd --- /dev/null +++ b/src/main/java/org/gitlab/api/models/GitlabCommitStats.java @@ -0,0 +1,46 @@ +package org.gitlab.api.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * @ClassName GitlabCommitStats + * @Description + * @Author mochen + * @Date 2021/6/3 14:47 + * @Version 1.0 + **/ +public class GitlabCommitStats { + + @JsonProperty("additions") + private Integer additions; + + @JsonProperty("deletions") + private Integer deletions; + + @JsonProperty("total") + private Integer total; + + public Integer getAdditions() { + return additions; + } + + public void setAdditions(Integer additions) { + this.additions = additions; + } + + public Integer getDeletions() { + return deletions; + } + + public void setDeletions(Integer deletions) { + this.deletions = deletions; + } + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } +} diff --git a/src/main/java/org/gitlab/api/query/CommitsQuery.java b/src/main/java/org/gitlab/api/query/CommitsQuery.java new file mode 100644 index 00000000..89f6e100 --- /dev/null +++ b/src/main/java/org/gitlab/api/query/CommitsQuery.java @@ -0,0 +1,94 @@ +package org.gitlab.api.query; + +import org.gitlab.api.http.Query; + +import java.io.UnsupportedEncodingException; + +/** + * @author yh + */ +public class CommitsQuery extends Query { + + public static final String PARAM_REF_NAME = "ref_name"; + public static final String PARAM_SINCE = "since"; + public static final String PARAM_UNTIL = "until"; + public static final String PARAM_PATH = "path"; + public static final String PARAM_ALL = "all"; + public static final String PARAM_WITH_STATS = "with_stats"; + public static final String PARAM_FIRST_PARENT = "first_parent"; + public static final String PARAM_ORDER = "order"; + + public void setRefName(String refName) throws UnsupportedEncodingException { + appendIf(PARAM_REF_NAME, refName); + } + + public CommitsQuery withRefName(String refName) throws UnsupportedEncodingException { + setRefName(refName); + return this; + } + + public void setSince(String since) throws UnsupportedEncodingException { + appendIf(PARAM_SINCE, since); + } + + public CommitsQuery withSince(String since) throws UnsupportedEncodingException { + setSince(since); + return this; + } + + public void setUntil(String until) throws UnsupportedEncodingException { + appendIf(PARAM_UNTIL, until); + } + + public CommitsQuery withUntil(String until) throws UnsupportedEncodingException { + setUntil(until); + return this; + } + + public void setPath(String path) throws UnsupportedEncodingException { + appendIf(PARAM_PATH, path); + } + + public CommitsQuery withPath(String path) throws UnsupportedEncodingException { + setPath(path); + return this; + } + + public void setAll(Boolean all) throws UnsupportedEncodingException { + appendIf(PARAM_ALL, all); + } + + public CommitsQuery withAll(Boolean all) throws UnsupportedEncodingException { + setAll(all); + return this; + } + + public void setWithStats(Boolean withStats) throws UnsupportedEncodingException { + appendIf(PARAM_WITH_STATS, withStats); + } + + public CommitsQuery withWithStats(Boolean withStats) throws UnsupportedEncodingException { + setWithStats(withStats); + return this; + } + + public void setFirstParent(Boolean firstParent) throws UnsupportedEncodingException { + appendIf(PARAM_FIRST_PARENT, firstParent); + } + + public CommitsQuery withFirstParent(Boolean firstParent) throws UnsupportedEncodingException { + setFirstParent(firstParent); + return this; + } + + public void setOrder(String order) throws UnsupportedEncodingException { + appendIf(PARAM_ORDER, order); + } + + public CommitsQuery withOrder(String order) throws UnsupportedEncodingException { + setOrder(order); + return this; + } + + +}