Skip to content

Commit a7991dd

Browse files
authored
Merge pull request #765 from tubbynl/feature/webhook-releases-and-deployments
Webhook support for Release and Deployment events
2 parents de4e5aa + e388f9a commit a7991dd

File tree

9 files changed

+430
-5
lines changed

9 files changed

+430
-5
lines changed

src/main/java/org/gitlab4j/api/ProjectApi.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,6 +2080,7 @@ public ProjectHook addHook(Object projectIdOrPath, String url, ProjectHook enabl
20802080
.withParam("repository_update_events", enabledHooks.getRepositoryUpdateEvents(), false)
20812081
.withParam("deployment_events", enabledHooks.getDeploymentEvents(), false)
20822082
.withParam("releases_events", enabledHooks.getReleasesEvents(), false)
2083+
.withParam("deployment_events", enabledHooks.getDeploymentEvents(), false)
20832084
.withParam("token", secretToken, false);
20842085
Response response = post(Response.Status.CREATED, formData, "projects", getProjectIdOrPath(projectIdOrPath), "hooks");
20852086
return (response.readEntity(ProjectHook.class));
@@ -2151,14 +2152,20 @@ public ProjectHook modifyHook(ProjectHook hook) throws GitLabApiException {
21512152
GitLabApiForm formData = new GitLabApiForm()
21522153
.withParam("url", hook.getUrl(), true)
21532154
.withParam("push_events", hook.getPushEvents(), false)
2155+
.withParam("push_events_branch_filter", hook.getPushEventsBranchFilter(), false)
21542156
.withParam("issues_events", hook.getIssuesEvents(), false)
2157+
.withParam("confidential_issues_events", hook.getConfidentialIssuesEvents(), false)
21552158
.withParam("merge_requests_events", hook.getMergeRequestsEvents(), false)
21562159
.withParam("tag_push_events", hook.getTagPushEvents(), false)
21572160
.withParam("note_events", hook.getNoteEvents(), false)
2161+
.withParam("confidential_note_events", hook.getConfidentialNoteEvents(), false)
21582162
.withParam("job_events", hook.getJobEvents(), false)
21592163
.withParam("pipeline_events", hook.getPipelineEvents(), false)
21602164
.withParam("wiki_page_events", hook.getWikiPageEvents(), false)
21612165
.withParam("enable_ssl_verification", hook.getEnableSslVerification(), false)
2166+
.withParam("repository_update_events", hook.getRepositoryUpdateEvents(), false)
2167+
.withParam("releases_events", hook.getReleasesEvents(), false)
2168+
.withParam("deployment_events", hook.getDeploymentEvents(), false)
21622169
.withParam("token", hook.getToken(), false);
21632170

21642171
Response response = put(Response.Status.OK, formData.asMap(), "projects", hook.getProjectId(), "hooks", hook.getId());
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package org.gitlab4j.api.webhook;
2+
3+
import org.gitlab4j.api.models.User;
4+
import org.gitlab4j.api.utils.JacksonJson;
5+
6+
public class DeploymentEvent extends AbstractEvent {
7+
8+
public static final String X_GITLAB_EVENT = "Deployment Hook";
9+
public static final String OBJECT_KIND = "deployment";
10+
11+
private String status;
12+
private String statusChangedAt;
13+
private Integer deployableId;
14+
private String deployableUrl;
15+
private String environment;
16+
private EventProject project;
17+
private String shortSha;
18+
private User user;
19+
private String userUrl;
20+
private String commitUrl;
21+
private String commitTitle;
22+
23+
public String getObjectKind() {
24+
return (OBJECT_KIND);
25+
}
26+
27+
public void setObjectKind(String objectKind) {
28+
if (!OBJECT_KIND.equals(objectKind))
29+
throw new RuntimeException("Invalid object_kind (" + objectKind + "), must be '" + OBJECT_KIND + "'");
30+
}
31+
32+
public String getStatus() {
33+
return status;
34+
}
35+
36+
public void setStatus(String status) {
37+
this.status = status;
38+
}
39+
40+
public String getStatusChangedAt() {
41+
return statusChangedAt;
42+
}
43+
44+
public void setStatusChangedAt(String statusChangedAt) {
45+
this.statusChangedAt = statusChangedAt;
46+
}
47+
48+
public Integer getDeployableId() {
49+
return deployableId;
50+
}
51+
52+
public void setDeployableId(Integer deployableId) {
53+
this.deployableId = deployableId;
54+
}
55+
56+
public String getDeployableUrl() {
57+
return deployableUrl;
58+
}
59+
60+
public void setDeployableUrl(String deployableUrl) {
61+
this.deployableUrl = deployableUrl;
62+
}
63+
64+
public String getEnvironment() {
65+
return environment;
66+
}
67+
68+
public void setEnvironment(String environment) {
69+
this.environment = environment;
70+
}
71+
72+
public EventProject getProject() {
73+
return project;
74+
}
75+
76+
public void setProject(EventProject project) {
77+
this.project = project;
78+
}
79+
80+
public String getShortSha() {
81+
return shortSha;
82+
}
83+
84+
public void setShortSha(String shortSha) {
85+
this.shortSha = shortSha;
86+
}
87+
88+
public User getUser() {
89+
return user;
90+
}
91+
92+
public void setUser(User user) {
93+
this.user = user;
94+
}
95+
96+
public String getUserUrl() {
97+
return userUrl;
98+
}
99+
100+
public void setUserUrl(String userUrl) {
101+
this.userUrl = userUrl;
102+
}
103+
104+
public String getCommitUrl() {
105+
return commitUrl;
106+
}
107+
108+
public void setCommitUrl(String commitUrl) {
109+
this.commitUrl = commitUrl;
110+
}
111+
112+
public String getCommitTitle() {
113+
return commitTitle;
114+
}
115+
116+
public void setCommitTitle(String commitTitle) {
117+
this.commitTitle = commitTitle;
118+
}
119+
120+
@Override
121+
public String toString() {
122+
return (JacksonJson.toJsonString(this));
123+
}
124+
}

src/main/java/org/gitlab4j/api/webhook/Event.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
@JsonSubTypes.Type(value = PipelineEvent.class, name = PipelineEvent.OBJECT_KIND),
1818
@JsonSubTypes.Type(value = PushEvent.class, name = PushEvent.OBJECT_KIND),
1919
@JsonSubTypes.Type(value = TagPushEvent.class, name = TagPushEvent.OBJECT_KIND),
20-
@JsonSubTypes.Type(value = WikiPageEvent.class, name = WikiPageEvent.OBJECT_KIND)
20+
@JsonSubTypes.Type(value = WikiPageEvent.class, name = WikiPageEvent.OBJECT_KIND),
21+
@JsonSubTypes.Type(value = DeploymentEvent.class, name = DeploymentEvent.OBJECT_KIND),
22+
@JsonSubTypes.Type(value = ReleaseEvent.class, name = ReleaseEvent.OBJECT_KIND)
2123
})
2224
public interface Event {
2325
String getObjectKind();
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package org.gitlab4j.api.webhook;
2+
3+
import org.gitlab4j.api.utils.JacksonJson;
4+
5+
import java.util.List;
6+
7+
public class EventReleaseAssets {
8+
9+
private Integer count;
10+
private List<EventReleaseLink> links;
11+
private List<EventReleaseSource> sources;
12+
13+
public Integer getCount() {
14+
return count;
15+
}
16+
17+
public void setCount(Integer count) {
18+
this.count = count;
19+
}
20+
21+
public List<EventReleaseLink> getLinks() {
22+
return links;
23+
}
24+
25+
public void setLinks(List<EventReleaseLink> links) {
26+
this.links = links;
27+
}
28+
29+
public List<EventReleaseSource> getSources() {
30+
return sources;
31+
}
32+
33+
public void setSources(List<EventReleaseSource> sources) {
34+
this.sources = sources;
35+
}
36+
37+
@Override
38+
public String toString() {
39+
return (JacksonJson.toJsonString(this));
40+
}
41+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package org.gitlab4j.api.webhook;
2+
3+
import org.gitlab4j.api.utils.JacksonJson;
4+
5+
public class EventReleaseLink {
6+
private Integer id;
7+
private Boolean external;
8+
private String linkType;
9+
private String name;
10+
private String url;
11+
12+
public Integer getId() {
13+
return id;
14+
}
15+
16+
public void setId(final Integer id) {
17+
this.id = id;
18+
}
19+
20+
public Boolean getExternal() {
21+
return external;
22+
}
23+
24+
public void setExternal(final Boolean external) {
25+
this.external = external;
26+
}
27+
28+
public String getLinkType() {
29+
return linkType;
30+
}
31+
32+
public void setLinkType(final String linkType) {
33+
this.linkType = linkType;
34+
}
35+
36+
public String getName() {
37+
return name;
38+
}
39+
40+
public void setName(final String name) {
41+
this.name = name;
42+
}
43+
44+
public String getUrl() {
45+
return url;
46+
}
47+
48+
public void setUrl(final String url) {
49+
this.url = url;
50+
}
51+
52+
@Override
53+
public String toString() {
54+
return (JacksonJson.toJsonString(this));
55+
}
56+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.gitlab4j.api.webhook;
2+
3+
import org.gitlab4j.api.utils.JacksonJson;
4+
5+
public class EventReleaseSource {
6+
private String format;
7+
private String url;
8+
9+
public String getFormat() {
10+
return format;
11+
}
12+
13+
public void setFormat(final String format) {
14+
this.format = format;
15+
}
16+
17+
public String getUrl() {
18+
return url;
19+
}
20+
21+
public void setUrl(final String url) {
22+
this.url = url;
23+
}
24+
25+
@Override
26+
public String toString() {
27+
return (JacksonJson.toJsonString(this));
28+
}
29+
}

0 commit comments

Comments
 (0)