Unverified Commit d1556748 authored by Gautier de Saint Martin Lacaze's avatar Gautier de Saint Martin Lacaze Committed by GitHub
Browse files

Merge pull request #662 from ttaxon/emails-on-push

Add support for email on push integration.
parents cac22673 718e7479
...@@ -3,6 +3,7 @@ package org.gitlab4j.api; ...@@ -3,6 +3,7 @@ package org.gitlab4j.api;
import org.gitlab4j.api.GitLabApi.ApiVersion; import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.services.BugzillaService; import org.gitlab4j.api.services.BugzillaService;
import org.gitlab4j.api.services.CustomIssueTrackerService; import org.gitlab4j.api.services.CustomIssueTrackerService;
import org.gitlab4j.api.services.EmailOnPushService;
import org.gitlab4j.api.services.ExternalWikiService; import org.gitlab4j.api.services.ExternalWikiService;
import org.gitlab4j.api.services.HipChatService; import org.gitlab4j.api.services.HipChatService;
import org.gitlab4j.api.services.JiraService; import org.gitlab4j.api.services.JiraService;
...@@ -493,4 +494,60 @@ public class ServicesApi extends AbstractApi { ...@@ -493,4 +494,60 @@ public class ServicesApi extends AbstractApi {
delete(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "services", "custom-issue-tracker"); delete(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "services", "custom-issue-tracker");
} }
/**
* Get Emails on push service settings for a project.
*
* <pre><code>GitLab Endpoint: GET /projects/:id/services/emails-on-push</code></pre>
*
* @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
* @return a EmailOnPushService instance holding the Email on push settings
* @throws GitLabApiException if any exception occurs
*/
public EmailOnPushService getEmailOnPushService(Object projectIdOrPath) throws GitLabApiException {
Response response = this.get(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "services", "emails-on-push");
return (response.readEntity(EmailOnPushService.class));
}
/**
* Updates the EmailsOnPush service settings for a project.
*
* <pre><code>GitLab Endpoint: PUT /projects/:id/services/emails-on-push</code></pre>
*
* The following properties on the EmailOnPushService instance are utilized in the update of the settings:
* <p>
* recipients (required), Emails separated by whitespace
* disable_diffs (optional), Disable code diffs
* send_from_committer_email (optional), Send from committer
* push_events (optional), Enable notifications for push events
* tag_push_events(optional), Enable notifications for tag push events
* branches_to_be_notified (optional), Branches to send notifications for. Valid options are "all", "default",
* "protected", and "default_and_protected". Notifications are always fired
* for tag pushes. The default value is "all"
* </p>
*
* @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
* @param emailsOnPush the EmailOnPushService instance holding the settings
* @return a EmailOnPushService instance holding the newly updated settings
* @throws GitLabApiException if any exception occurs
*/
public EmailOnPushService updateEmailOnPushService(Object projectIdOrPath, EmailOnPushService emailsOnPush) throws GitLabApiException {
GitLabApiForm formData = emailsOnPush.servicePropertiesForm();
Response response = put(Response.Status.OK, formData.asMap(), "projects", getProjectIdOrPath(projectIdOrPath), "services", "emails-on-push");
return (response.readEntity(EmailOnPushService.class));
}
/**
* Deletes the Emails on push service for a project.
*
* <pre><code>GitLab Endpoint: DELETE /projects/:id/services/emails-on-push</code></pre>
*
* @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
* @throws GitLabApiException if any exception occurs
*/
public void deleteEmailonPushService(Object projectIdOrPath) throws GitLabApiException {
delete(Response.Status.OK, null, "projects", getProjectIdOrPath(projectIdOrPath), "services", "emails-on-push");
}
} }
package org.gitlab4j.api.services;
import org.gitlab4j.api.GitLabApiForm;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class EmailOnPushService extends NotificationService {
public static final String RECIPIENT_PROP = "recipients";
public static final String DISABLE_DIFFS_PROP = "disable_diffs";
public static final String SEND_FROM_COMMITTER_EMAIL_PROP = "send_from_committer_email";
public static final String BRANCHES_TO_BE_NOTIFIED_PROP = "branches_to_be_notified";
@Override
public GitLabApiForm servicePropertiesForm() {
GitLabApiForm formData = new GitLabApiForm()
.withParam(RECIPIENT_PROP, getRecipients(), true)
.withParam(DISABLE_DIFFS_PROP, getDisableDiffs())
.withParam(SEND_FROM_COMMITTER_EMAIL_PROP, getSendFromCommitterEmail())
.withParam(PUSH_EVENTS_PROP, getPushEvents())
.withParam("tag_push_events", getTagPushEvents())
.withParam(BRANCHES_TO_BE_NOTIFIED_PROP, getBranchesToBeNotified());
return formData;
}
public EmailOnPushService withPushEvents(Boolean pushEvents) {
return withPushEvents(pushEvents, this);
}
public EmailOnPushService withTagPushEvents(Boolean pushEvents) {
return withTagPushEvents(pushEvents, this);
}
@JsonIgnore
public String getRecipients() {
return ((String)getProperty(RECIPIENT_PROP));
}
public void setRecipients(String recipients) {
setProperty(RECIPIENT_PROP, recipients);
}
public EmailOnPushService withRecipients(String recipients) {
setRecipients(recipients);
return this;
}
@JsonIgnore
public Boolean getDisableDiffs() {
return Boolean.valueOf(getProperty(DISABLE_DIFFS_PROP,"false"));
}
public void setDisableDiffs(Boolean disableDiffs) {
setProperty(DISABLE_DIFFS_PROP, disableDiffs);
}
public EmailOnPushService withDisableDiffs(Boolean disableDiffs) {
setDisableDiffs(disableDiffs);
return this;
}
@JsonIgnore
public Boolean getSendFromCommitterEmail() {
return Boolean.valueOf(getProperty(SEND_FROM_COMMITTER_EMAIL_PROP,"false"));
}
public void setSendFromCommitterEmail(Boolean sendFromCommitterEmail) {
setProperty(SEND_FROM_COMMITTER_EMAIL_PROP, sendFromCommitterEmail);
}
public EmailOnPushService withSendFromCommitterEmail(Boolean sendFromCommitterEmail) {
setSendFromCommitterEmail(sendFromCommitterEmail);
return this;
}
@JsonIgnore
public String getBranchesToBeNotified() {
return ((String)getProperty(BRANCHES_TO_BE_NOTIFIED_PROP));
}
public void setBranchesToBeNotified(String branchesToBeNotified) {
setProperty(BRANCHES_TO_BE_NOTIFIED_PROP, branchesToBeNotified);
}
public EmailOnPushService withBranchesToBeNotified(String branchesToBeNotified) {
setBranchesToBeNotified(branchesToBeNotified);
return this;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment