diff --git a/src/main/java/org/gitlab4j/api/RepositoryApi.java b/src/main/java/org/gitlab4j/api/RepositoryApi.java index 8d6d5f53fe6a7ebcad62ced208c25ae272731cd5..fd6dbbd42d34c9f3b8a4d6009e22eaacf9e6937e 100644 --- a/src/main/java/org/gitlab4j/api/RepositoryApi.java +++ b/src/main/java/org/gitlab4j/api/RepositoryApi.java @@ -18,6 +18,7 @@ import javax.ws.rs.core.Response; import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.models.Branch; +import org.gitlab4j.api.models.ChangelogPayload; import org.gitlab4j.api.models.Commit; import org.gitlab4j.api.models.CompareResults; import org.gitlab4j.api.models.Contributor; @@ -749,4 +750,32 @@ public class RepositoryApi extends AbstractApi { delete(Response.Status.NO_CONTENT, null, "projects", getProjectIdOrPath(projectIdOrPath), "repository", "merged_branches"); } + + /** + * Generate changelog data based on commits in a repository. + * + *
GitLab Endpoint: POST /projects/:id/repository/changelog
+ * + * @param projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance + * @param version the version to generate the changelog for + * @throws GitLabApiException if any exception occurs + */ + public void generateChangelog(Object projectIdOrPath, String version) throws GitLabApiException { + generateChangelog(projectIdOrPath, new ChangelogPayload(version)); + } + + /** + * Generate changelog data based on commits in a repository. + * + *
GitLab Endpoint: POST /projects/:id/repository/changelog
+ * + * @param projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance + * @param payload the payload to generate the changelog for + * @throws GitLabApiException if any exception occurs + */ + public void generateChangelog(Object projectIdOrPath, ChangelogPayload payload) throws GitLabApiException { + post(Response.Status.OK, payload.getFormData(), "projects", + getProjectIdOrPath(projectIdOrPath), "repository", "changelog"); + } + } diff --git a/src/main/java/org/gitlab4j/api/models/ChangelogPayload.java b/src/main/java/org/gitlab4j/api/models/ChangelogPayload.java new file mode 100644 index 0000000000000000000000000000000000000000..3fe63a531d02c7a05f42f556c55ac97632df553c --- /dev/null +++ b/src/main/java/org/gitlab4j/api/models/ChangelogPayload.java @@ -0,0 +1,106 @@ +package org.gitlab4j.api.models; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import org.gitlab4j.api.GitLabApiForm; +import org.gitlab4j.api.utils.ISO8601; +import org.gitlab4j.api.utils.JacksonJson; + +import java.util.Date; + +public class ChangelogPayload { + + private String version; + private String from; + private String to; + private Date date; + private String branch; + private String trailer; + private String file; + private String message; + + public ChangelogPayload(String version) { + this.version = version; + } + + @JsonIgnore + public GitLabApiForm getFormData() { + return new GitLabApiForm() + .withParam("version", version, true) + .withParam("from", from) + .withParam("to", to) + .withParam("date", ISO8601.dateOnly(date)) + .withParam("branch", branch) + .withParam("trailer", trailer) + .withParam("file", file) + .withParam("message", message); + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getFrom() { + return from; + } + + public void setFrom(String from) { + this.from = from; + } + + public String getTo() { + return to; + } + + public void setTo(String to) { + this.to = to; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public String getBranch() { + return branch; + } + + public void setBranch(String branch) { + this.branch = branch; + } + + public String getTrailer() { + return trailer; + } + + public void setTrailer(String trailer) { + this.trailer = trailer; + } + + public String getFile() { + return file; + } + + public void setFile(String file) { + this.file = file; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + return (JacksonJson.toJsonString(this)); + } +}