Skip to content

Commit

Permalink
feat: create group webhook #1173
Browse files Browse the repository at this point in the history
  • Loading branch information
LeJeanbono committed Oct 13, 2024
1 parent 6e5e2e6 commit ba5ad9d
Show file tree
Hide file tree
Showing 4 changed files with 490 additions and 18 deletions.
34 changes: 16 additions & 18 deletions src/main/java/org/gitlab4j/api/GroupApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,25 +16,8 @@
import javax.ws.rs.core.Response;

import org.gitlab4j.api.GitLabApi.ApiVersion;
import org.gitlab4j.api.models.AccessLevel;
import org.gitlab4j.api.models.AccessRequest;
import org.gitlab4j.api.models.AuditEvent;
import org.gitlab4j.api.models.Badge;
import org.gitlab4j.api.models.CustomAttribute;
import org.gitlab4j.api.models.Group;
import org.gitlab4j.api.models.GroupAccessToken;
import org.gitlab4j.api.models.GroupFilter;
import org.gitlab4j.api.models.GroupParams;
import org.gitlab4j.api.models.GroupProjectsFilter;
import org.gitlab4j.api.models.*;
import org.gitlab4j.api.models.ImpersonationToken.Scope;
import org.gitlab4j.api.models.Iteration;
import org.gitlab4j.api.models.IterationFilter;
import org.gitlab4j.api.models.LdapGroupLink;
import org.gitlab4j.api.models.Member;
import org.gitlab4j.api.models.Project;
import org.gitlab4j.api.models.SamlGroupLink;
import org.gitlab4j.api.models.Variable;
import org.gitlab4j.api.models.Visibility;
import org.gitlab4j.api.utils.ISO8601;

/**
Expand Down Expand Up @@ -2440,4 +2423,19 @@ public GroupAccessToken rotateGroupAccessToken(Object groupIdOrPath, Long tokenI
public void revokeGroupAccessToken(Object groupIdOrPath, Long tokenId) throws GitLabApiException {
delete(Response.Status.NO_CONTENT, null, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens", tokenId);
}

/**
* Add a group hook
*
* <pre><code>GitLab Endpoint: POST /groups/:id/hooks</code></pre>
*
* @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
* @param webHookParams webhook creation options
* @throws GitLabApiException if any exception occurs
*/
public Webhook addWebhook(Object groupIdOrPath, WebHookParams webHookParams) throws GitLabApiException {
Response response = post(
Response.Status.CREATED, webHookParams.getForm(), "groups", getGroupIdOrPath(groupIdOrPath), "hooks");
return (response.readEntity(Webhook.class));
}
}
183 changes: 183 additions & 0 deletions src/main/java/org/gitlab4j/api/models/WebHookParams.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
package org.gitlab4j.api.models;

import java.io.Serializable;

import org.gitlab4j.api.GitLabApiForm;

public class WebHookParams implements Serializable {
private static final long serialVersionUID = 1L;

private String url;
private String name;
private String description;
private Boolean pushEvents;
private String pushEventsBranchFilter;
private String branchFilterStrategy;
private Boolean issuesEvents;
private Boolean confidentialIssuesEvents;
private Boolean mergeRequestsEvents;
private Boolean tagPushEvents;
private Boolean noteEvents;
private Boolean confidentialNoteEvents;
private Boolean jobEvents;
private Boolean pipelineEvents;
private Boolean wikiPageEvents;
private Boolean deploymentEvents;
private Boolean featureFlagEvents;
private Boolean releasesEvents;
private Boolean subgroupEvents;
private Boolean memberEvents;
private Boolean enableSslVerification;
private String token;
private Boolean resourceAccessTokenEvents;
private String customWebhookTemplate;

public GitLabApiForm getForm() {

return new GitLabApiForm()
.withParam("url", url, true)
.withParam("name", name)
.withParam("description", description)
.withParam("push_events", pushEvents)
.withParam("push_events_branch_filter", pushEventsBranchFilter)
.withParam("branch_filter_strategy", branchFilterStrategy)
.withParam("issues_events", issuesEvents)
.withParam("confidential_issues_events", confidentialIssuesEvents)
.withParam("merge_requests_events", mergeRequestsEvents)
.withParam("tag_push_events", tagPushEvents)
.withParam("note_events", noteEvents)
.withParam("confidential_note_events", confidentialNoteEvents)
.withParam("job_events", jobEvents)
.withParam("pipeline_events", pipelineEvents)
.withParam("wiki_page_events", wikiPageEvents)
.withParam("deployment_events", deploymentEvents)
.withParam("feature_flag_events", featureFlagEvents)
.withParam("releases_events", releasesEvents)
.withParam("subgroup_events", subgroupEvents)
.withParam("member_events", memberEvents)
.withParam("enable_ssl_verification", enableSslVerification)
.withParam("token", token)
.withParam("resource_access_token_events", resourceAccessTokenEvents)
.withParam("custom_webhook_template", customWebhookTemplate);
}

public WebHookParams setBranchFilterStrategy(String branchFilterStrategy) {
this.branchFilterStrategy = branchFilterStrategy;
return this;
}

public WebHookParams setUrl(String url) {
this.url = url;
return this;
}

public WebHookParams setName(String name) {
this.name = name;
return this;
}

public WebHookParams setDescription(String description) {
this.description = description;
return this;
}

public WebHookParams setPushEvents(Boolean pushEvents) {
this.pushEvents = pushEvents;
return this;
}

public WebHookParams setPushEventsBranchFilter(String pushEventsBranchFilter) {
this.pushEventsBranchFilter = pushEventsBranchFilter;
return this;
}

public WebHookParams setIssuesEvents(Boolean issuesEvents) {
this.issuesEvents = issuesEvents;
return this;
}

public WebHookParams setConfidentialIssuesEvents(Boolean confidentialIssuesEvents) {
this.confidentialIssuesEvents = confidentialIssuesEvents;
return this;
}

public WebHookParams setMergeRequestsEvents(Boolean mergeRequestsEvents) {
this.mergeRequestsEvents = mergeRequestsEvents;
return this;
}

public WebHookParams setTagPushEvents(Boolean tagPushEvents) {
this.tagPushEvents = tagPushEvents;
return this;
}

public WebHookParams setNoteEvents(Boolean noteEvents) {
this.noteEvents = noteEvents;
return this;
}

public WebHookParams setConfidentialNoteEvents(Boolean confidentialNoteEvents) {
this.confidentialNoteEvents = confidentialNoteEvents;
return this;
}

public WebHookParams setJobEvents(Boolean jobEvents) {
this.jobEvents = jobEvents;
return this;
}

public WebHookParams setPipelineEvents(Boolean pipelineEvents) {
this.pipelineEvents = pipelineEvents;
return this;
}

public WebHookParams setWikiPageEvents(Boolean wikiPageEvents) {
this.wikiPageEvents = wikiPageEvents;
return this;
}

public WebHookParams setDeploymentEvents(Boolean deploymentEvents) {
this.deploymentEvents = deploymentEvents;
return this;
}

public WebHookParams setFeatureFlagEvents(Boolean featureFlagEvents) {
this.featureFlagEvents = featureFlagEvents;
return this;
}

public WebHookParams setReleasesEvents(Boolean releasesEvents) {
this.releasesEvents = releasesEvents;
return this;
}

public WebHookParams setSubgroupEvents(Boolean subgroupEvents) {
this.subgroupEvents = subgroupEvents;
return this;
}

public WebHookParams setMemberEvents(Boolean memberEvents) {
this.memberEvents = memberEvents;
return this;
}

public WebHookParams setEnableSslVerification(Boolean enableSslVerification) {
this.enableSslVerification = enableSslVerification;
return this;
}

public WebHookParams setToken(String token) {
this.token = token;
return this;
}

public WebHookParams setResourceAccessTokenEvents(Boolean resourceAccessTokenEvents) {
this.resourceAccessTokenEvents = resourceAccessTokenEvents;
return this;
}

public WebHookParams setCustomWebhookTemplate(String customWebhookTemplate) {
this.customWebhookTemplate = customWebhookTemplate;
return this;
}
}
Loading

0 comments on commit ba5ad9d

Please sign in to comment.