Skip to content

Commit 88bb167

Browse files
authored
Add webhook creation on project configuration (#162)
* Added webhook creation on project configure page * Removed unused import, added POST tag, security check
1 parent a7bc7a4 commit 88bb167

File tree

12 files changed

+447
-44
lines changed

12 files changed

+447
-44
lines changed

src/main/java/com/gitee/jenkins/gitee/api/GiteeClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ public interface GiteeClient {
1414
User getCurrentUser();
1515

1616
void createPullRequest(PullRequest pr, boolean pruneSourceBranch, boolean draft, boolean squash);
17+
18+
WebHook createWebHook(String owner, String repo, WebHook hook);
19+
20+
List<WebHook> getWebHooks(String owner, String repo);
1721

1822
List<Label> getLabels(String owner, String repo);
1923

src/main/java/com/gitee/jenkins/gitee/api/impl/GiteeApiProxy.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ interface GiteeApiProxy {
1414
void createPullRequest(String owner, String repo, String title, String base, String head, String body,
1515
Boolean pruneSourceBranch, Boolean draft, Boolean squash);
1616

17+
WebHook createWebHook(String owner, String repo, String url, String title, Integer encryptionType,
18+
Boolean pushEvents, Boolean tagPushEvents, Boolean issuesEvents, Boolean noteEvents,
19+
Boolean mergeRequestEvents);
20+
21+
List<WebHook> getWebHooks(String owner, String repo);
22+
1723
List<PullRequest> getPullRequest(String owner, String repo, String base, String head);
1824

1925
User getCurrentUser();

src/main/java/com/gitee/jenkins/gitee/api/impl/GiteeV5ApiProxy.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,28 @@ List<PullRequest> getPullRequest(@PathParam("ownerPath") String ownerPath,
5555
@QueryParam("base") String base,
5656
@QueryParam("head") String head);
5757

58+
59+
@POST
60+
@Produces(MediaType.APPLICATION_JSON)
61+
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
62+
@Path("/repos/{ownerPath}/{repoPath}/hooks")
63+
WebHook createWebHook(@PathParam("ownerPath") String ownerPath,
64+
@PathParam("repoPath") String repoPath,
65+
@FormParam("url") String url,
66+
@FormParam("title") String title,
67+
@FormParam("encryption_type") Integer encryptionType,
68+
@FormParam("push_events") Boolean pushEvents,
69+
@FormParam("tag_push_events") Boolean tagPushEvents,
70+
@FormParam("issues_events") Boolean issuesEvents,
71+
@FormParam("note_events") Boolean noteEvents,
72+
@FormParam("merge_requests_events") Boolean mergeRequestsEvents);
73+
74+
@GET
75+
@Produces(MediaType.APPLICATION_JSON)
76+
@Path("/repos/{ownerPath}/{repoPath}/hooks")
77+
List<WebHook> getWebHooks(@PathParam("ownerPath") String ownerPath,
78+
@PathParam("repoPath") String repoPath);
79+
5880
@HEAD
5981
@Produces(MediaType.APPLICATION_JSON)
6082
@Path("/user")

src/main/java/com/gitee/jenkins/gitee/api/impl/ResteasyGiteeClient.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,16 @@ public User getCurrentUser() {
5353
public List<Label> getLabels(String owner, String repo) {
5454
return api.getLabels(owner, repo);
5555
}
56+
57+
@Override
58+
public WebHook createWebHook(String owner, String repo, WebHook hook) {
59+
return api.createWebHook(owner, repo, hook.getUrl(), hook.getTitle(), hook.getEncryptionType(),
60+
hook.getPushEvents(), hook.getTagPushEvents(), hook.getIssuesEvents(), hook.getNoteEvents(),
61+
hook.getMergeRequestsEvents());
62+
}
63+
64+
@Override
65+
public List<WebHook> getWebHooks(String owner, String repo) {
66+
return api.getWebHooks(owner, repo);
67+
}
5668
}
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package com.gitee.jenkins.gitee.api.model;
2+
3+
import org.apache.commons.lang.builder.EqualsBuilder;
4+
import org.apache.commons.lang.builder.HashCodeBuilder;
5+
import org.apache.commons.lang.builder.ToStringBuilder;
6+
7+
import net.karneim.pojobuilder.GeneratePojoBuilder;
8+
9+
@GeneratePojoBuilder(intoPackage = "*.builder.generated", withFactoryMethod = "*")
10+
public class WebHook {
11+
private String url;
12+
private String title;
13+
private int encryptionType;
14+
private boolean pushEvents;
15+
private boolean tagPushEvents;
16+
private boolean issuesEvents;
17+
private boolean noteEvents;
18+
private boolean mergeRequestsEvents;
19+
20+
public String getUrl() {
21+
return url;
22+
}
23+
24+
public String getTitle() {
25+
return title;
26+
}
27+
28+
public int getEncryptionType() {
29+
return encryptionType;
30+
}
31+
32+
public boolean getPushEvents() {
33+
return pushEvents;
34+
}
35+
36+
public boolean getTagPushEvents() {
37+
return tagPushEvents;
38+
}
39+
40+
public boolean getIssuesEvents() {
41+
return issuesEvents;
42+
}
43+
44+
public boolean getNoteEvents() {
45+
return noteEvents;
46+
}
47+
48+
public boolean getMergeRequestsEvents() {
49+
return mergeRequestsEvents;
50+
}
51+
52+
public void setUrl(String url) {
53+
this.url = url;
54+
}
55+
56+
public void setTitle(String title) {
57+
this.title = title;
58+
}
59+
60+
public void setEncryptionType(int encryptionType) {
61+
this.encryptionType = encryptionType;
62+
}
63+
64+
public void setPushEvents(boolean pushEvents) {
65+
this.pushEvents = pushEvents;
66+
}
67+
68+
public void setTagPushEvents(boolean tagPushEvents) {
69+
this.tagPushEvents = tagPushEvents;
70+
}
71+
72+
public void setIssuesEvents(boolean issuesEvents) {
73+
this.issuesEvents = issuesEvents;
74+
}
75+
76+
public void setNoteEvents(boolean noteEvents) {
77+
this.noteEvents = noteEvents;
78+
}
79+
80+
public void setMergeRequestsEvents(boolean mergeRequestsEvents) {
81+
this.mergeRequestsEvents = mergeRequestsEvents;
82+
}
83+
84+
@Override
85+
public boolean equals(Object o) {
86+
if (this == o) {
87+
return true;
88+
}
89+
if (o == null || getClass() != o.getClass()) {
90+
return false;
91+
}
92+
WebHook hook = (WebHook) o;
93+
return new EqualsBuilder()
94+
.append(url, hook.url)
95+
.append(title, hook.title)
96+
.append(encryptionType, hook.encryptionType)
97+
.append(pushEvents, hook.pushEvents)
98+
.append(tagPushEvents, hook.tagPushEvents)
99+
.append(issuesEvents, hook.issuesEvents)
100+
.append(noteEvents, hook.noteEvents)
101+
.append(mergeRequestsEvents, hook.mergeRequestsEvents)
102+
.isEquals();
103+
}
104+
105+
@Override
106+
public int hashCode() {
107+
return new HashCodeBuilder(17, 37)
108+
.append(url)
109+
.append(title)
110+
.append(encryptionType)
111+
.append(pushEvents)
112+
.append(tagPushEvents)
113+
.append(issuesEvents)
114+
.append(noteEvents)
115+
.append(mergeRequestsEvents)
116+
.toHashCode();
117+
}
118+
119+
@Override
120+
public String toString() {
121+
return new ToStringBuilder(this)
122+
.append("url", url)
123+
.append("title", title)
124+
.append("encryptionType", encryptionType)
125+
.append("pushEvents", pushEvents)
126+
.append("tagPushEvents", tagPushEvents)
127+
.append("issuesEvents", issuesEvents)
128+
.append("noteEvents", noteEvents)
129+
.append("mergeRequestsEvents", mergeRequestsEvents)
130+
.toString();
131+
}
132+
}

0 commit comments

Comments
 (0)