1
1
package org .gitlab4j .api ;
2
2
3
3
import org .gitlab4j .api .GitLabApi .ApiVersion ;
4
+ import org .gitlab4j .api .services .BugzillaService ;
5
+ import org .gitlab4j .api .services .CustomIssueTrackerService ;
4
6
import org .gitlab4j .api .services .ExternalWikiService ;
5
7
import org .gitlab4j .api .services .HipChatService ;
6
8
import org .gitlab4j .api .services .JiraService ;
@@ -95,22 +97,7 @@ public HipChatService getHipChatService(Object projectIdOrPath) throws GitLabApi
95
97
* @throws GitLabApiException if any exception occurs
96
98
*/
97
99
public HipChatService updateHipChatService (Object projectIdOrPath , HipChatService hipChat ) throws GitLabApiException {
98
- GitLabApiForm formData = new GitLabApiForm ()
99
- .withParam ("push_events" , hipChat .getPushEvents ())
100
- .withParam ("issues_events" , hipChat .getIssuesEvents ())
101
- .withParam ("confidential_issues_events" , hipChat .getConfidentialIssuesEvents ())
102
- .withParam ("merge_requests_events" , hipChat .getMergeRequestsEvents ())
103
- .withParam ("tag_push_events" , hipChat .getTagPushEvents ())
104
- .withParam ("note_events" , hipChat .getNoteEvents ())
105
- .withParam ("confidential_note_events" , hipChat .getConfidentialNoteEvents ())
106
- .withParam ("pipeline_events" , hipChat .getPipelineEvents ())
107
- .withParam ("token" , hipChat .getToken (), true )
108
- .withParam ("color" , hipChat .getColor ())
109
- .withParam ("notify" , hipChat .getNotify ())
110
- .withParam ("room" , hipChat .getRoom ())
111
- .withParam ("api_version" , hipChat .getApiVersion ())
112
- .withParam ("server" , hipChat .getServer ())
113
- .withParam ("notify_only_broken_pipelines" , hipChat .getNotifyOnlyBrokenPipelines ());
100
+ GitLabApiForm formData = hipChat .servicePropertiesForm ();
114
101
Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "hipchat" );
115
102
return (response .readEntity (HipChatService .class ));
116
103
}
@@ -212,30 +199,7 @@ public SlackService getSlackService(Object projectIdOrPath) throws GitLabApiExce
212
199
* @throws GitLabApiException if any exception occurs
213
200
*/
214
201
public SlackService updateSlackService (Object projectIdOrPath , SlackService slackNotifications ) throws GitLabApiException {
215
- GitLabApiForm formData = new GitLabApiForm ()
216
- .withParam ("webhook" , slackNotifications .getWebhook (), true )
217
- .withParam ("username" , slackNotifications .getUsername ())
218
- .withParam ("channel" , slackNotifications .getDefaultChannel ())
219
- .withParam ("notify_only_broken_pipelines" , slackNotifications .getNotifyOnlyBrokenPipelines ())
220
- .withParam ("notify_only_default_branch" , slackNotifications .getNotifyOnlyDefaultBranch ())
221
- .withParam ("push_events" , slackNotifications .getPushEvents ())
222
- .withParam ("issues_events" , slackNotifications .getIssuesEvents ())
223
- .withParam ("confidential_issues_events" , slackNotifications .getConfidentialIssuesEvents ())
224
- .withParam ("merge_requests_events" , slackNotifications .getMergeRequestsEvents ())
225
- .withParam ("tag_push_events" , slackNotifications .getTagPushEvents ())
226
- .withParam ("note_events" , slackNotifications .getNoteEvents ())
227
- .withParam ("confidential_note_events" , slackNotifications .getConfidentialNoteEvents ())
228
- .withParam ("pipeline_events" , slackNotifications .getPipelineEvents ())
229
- .withParam ("wiki_page_events" , slackNotifications .getWikiPageEvents ())
230
- .withParam ("push_channel" , slackNotifications .getPushChannel ())
231
- .withParam ("issue_channel" , slackNotifications .getIssueChannel ())
232
- .withParam ("confidential_issue_channel" , slackNotifications .getConfidentialIssueChannel ())
233
- .withParam ("merge_request_channel" , slackNotifications .getMergeRequestChannel ())
234
- .withParam ("note_channel" , slackNotifications .getNoteChannel ())
235
- .withParam ("confidential_note_channel" , slackNotifications .getConfidentialNoteChannel ())
236
- .withParam ("tag_push_channel" , slackNotifications .getTagPushChannel ())
237
- .withParam ("pipeline_channel" , slackNotifications .getPipelineChannel ())
238
- .withParam ("wiki_page_channel" , slackNotifications .getWikiPageChannel ());
202
+ GitLabApiForm formData = slackNotifications .servicePropertiesForm ();
239
203
Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "slack" );
240
204
return (response .readEntity (SlackService .class ));
241
205
}
@@ -289,15 +253,7 @@ public JiraService getJiraService(Object projectIdOrPath) throws GitLabApiExcept
289
253
* @throws GitLabApiException if any exception occurs
290
254
*/
291
255
public JiraService updateJiraService (Object projectIdOrPath , JiraService jira ) throws GitLabApiException {
292
- GitLabApiForm formData = new GitLabApiForm ()
293
- .withParam ("merge_requests_events" , jira .getMergeRequestsEvents ())
294
- .withParam ("commit_events" , jira .getCommitEvents ())
295
- .withParam ("url" , jira .getUrl (), true )
296
- .withParam ("api_url" , jira .getApiUrl ())
297
- .withParam ("project_key" , jira .getProjectKey ())
298
- .withParam ("username" , jira .getUsername (), true )
299
- .withParam ("password" , jira .getPassword (), true )
300
- .withParam ("jira_issue_transition_id" , jira .getJiraIssueTransitionId ());
256
+ GitLabApiForm formData = jira .servicePropertiesForm ();
301
257
Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "jira" );
302
258
return (response .readEntity (JiraService .class ));
303
259
}
@@ -344,8 +300,7 @@ public ExternalWikiService getExternalWikiService(Object projectIdOrPath) throws
344
300
* @throws GitLabApiException if any exception occurs
345
301
*/
346
302
public ExternalWikiService updateExternalWikiService (Object projectIdOrPath , ExternalWikiService externalWiki ) throws GitLabApiException {
347
- GitLabApiForm formData = new GitLabApiForm ()
348
- .withParam ("external_wiki_url" , externalWiki .getExternalWikiUrl ());
303
+ GitLabApiForm formData = externalWiki .servicePropertiesForm ();
349
304
Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "external-wiki" );
350
305
return (response .readEntity (ExternalWikiService .class ));
351
306
}
@@ -415,30 +370,7 @@ public MattermostService getMattermostService(Object projectIdOrPath) throws Git
415
370
* @throws GitLabApiException if any exception occurs
416
371
*/
417
372
public MattermostService updateMattermostService (Object projectIdOrPath , MattermostService mattermostNotifications ) throws GitLabApiException {
418
- GitLabApiForm formData = new GitLabApiForm ()
419
- .withParam ("webhook" , mattermostNotifications .getWebhook (), true )
420
- .withParam ("username" , mattermostNotifications .getUsername ())
421
- .withParam ("channel" , mattermostNotifications .getDefaultChannel ())
422
- .withParam ("notify_only_broken_pipelines" , mattermostNotifications .getNotifyOnlyBrokenPipelines ())
423
- .withParam ("notify_only_default_branch" , mattermostNotifications .getNotifyOnlyDefaultBranch ())
424
- .withParam ("push_events" , mattermostNotifications .getPushEvents ())
425
- .withParam ("issues_events" , mattermostNotifications .getIssuesEvents ())
426
- .withParam ("confidential_issues_events" , mattermostNotifications .getConfidentialIssuesEvents ())
427
- .withParam ("merge_requests_events" , mattermostNotifications .getMergeRequestsEvents ())
428
- .withParam ("tag_push_events" , mattermostNotifications .getTagPushEvents ())
429
- .withParam ("note_events" , mattermostNotifications .getNoteEvents ())
430
- .withParam ("confidential_note_events" , mattermostNotifications .getConfidentialNoteEvents ())
431
- .withParam ("pipeline_events" , mattermostNotifications .getPipelineEvents ())
432
- .withParam ("wiki_page_events" , mattermostNotifications .getWikiPageEvents ())
433
- .withParam ("push_channel" , mattermostNotifications .getPushChannel ())
434
- .withParam ("issue_channel" , mattermostNotifications .getIssueChannel ())
435
- .withParam ("confidential_issue_channel" , mattermostNotifications .getConfidentialIssueChannel ())
436
- .withParam ("merge_request_channel" , mattermostNotifications .getMergeRequestChannel ())
437
- .withParam ("note_channel" , mattermostNotifications .getNoteChannel ())
438
- .withParam ("confidential_note_channel" , mattermostNotifications .getConfidentialNoteChannel ())
439
- .withParam ("tag_push_channel" , mattermostNotifications .getTagPushChannel ())
440
- .withParam ("pipeline_channel" , mattermostNotifications .getPipelineChannel ())
441
- .withParam ("wiki_page_channel" , mattermostNotifications .getWikiPageChannel ());
373
+ GitLabApiForm formData = mattermostNotifications .servicePropertiesForm ();
442
374
Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "mattermost" );
443
375
return (response .readEntity (MattermostService .class ));
444
376
}
@@ -455,4 +387,110 @@ public void deleteMattermostService(Object projectIdOrPath) throws GitLabApiExce
455
387
Response .Status expectedStatus = (isApiVersion (ApiVersion .V3 ) ? Response .Status .OK : Response .Status .NO_CONTENT );
456
388
delete (expectedStatus , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "mattermost" );
457
389
}
390
+
391
+ /**
392
+ * Get the Bugzilla service settings for a project.
393
+ *
394
+ * <pre><code>GitLab Endpoint: GET /projects/:id/services/bugzilla</code></pre>
395
+ *
396
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
397
+ * @return a BugzillaService instance holding the External Wiki service settings
398
+ * @throws GitLabApiException if any exception occurs
399
+ */
400
+ public BugzillaService getBugzillaService (Object projectIdOrPath ) throws GitLabApiException {
401
+ Response response = this .get (Response .Status .OK , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "bugzilla" );
402
+ return (response .readEntity (BugzillaService .class ));
403
+ }
404
+
405
+ /**
406
+ * Updates the Bugzilla service settings for a project.
407
+ *
408
+ * <pre><code>GitLab Endpoint: PUT /projects/:id/services/bugzilla</code></pre>
409
+ *
410
+ * The following properties on the BugzillaService instance are utilized in the update of the settings:
411
+ * <p>
412
+ * description (optional), description
413
+ * issuesUrl (required), issue url
414
+ * newIssueUrl (required), new Issue url
415
+ * projectUrl (required), project url
416
+ * pushEvents (optional) - Enable notifications for push events
417
+ * title (optional), the title for the custom issue tracker
418
+ * </p>
419
+ *
420
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
421
+ * @param bugzillaService the BugzillaService instance holding the settings
422
+ * @return a BugzillaService instance holding the newly updated settings
423
+ * @throws GitLabApiException if any exception occurs
424
+ */
425
+ public BugzillaService updateBugzillaService (Object projectIdOrPath , BugzillaService bugzillaService ) throws GitLabApiException {
426
+ GitLabApiForm formData = bugzillaService .servicePropertiesForm ();
427
+ Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "bugzilla" );
428
+ return (response .readEntity (BugzillaService .class ));
429
+ }
430
+
431
+ /**
432
+ * Deletes the Bugzilla service for a project.
433
+ *
434
+ * <pre><code>GitLab Endpoint: DELETE /projects/:id/services/bugzilla</code></pre>
435
+ *
436
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
437
+ * @throws GitLabApiException if any exception occurs
438
+ */
439
+ public void deleteBugzillaService (Object projectIdOrPath ) throws GitLabApiException {
440
+ delete (Response .Status .OK , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "bugzilla" );
441
+
442
+ }
443
+
444
+ /**
445
+ * Get the Custom Issue Tracker service settings for a project.
446
+ *
447
+ * <pre><code>GitLab Endpoint: GET /projects/:id/services/custom_issue_tracker</code></pre>
448
+ *
449
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
450
+ * @return a ExternalWikiService instance holding the External Wiki service settings
451
+ * @throws GitLabApiException if any exception occurs
452
+ */
453
+ public CustomIssueTrackerService getCustomIssueTrackerService (Object projectIdOrPath ) throws GitLabApiException {
454
+ Response response = this .get (Response .Status .OK , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "custom-issue-tracker" );
455
+ return (response .readEntity (CustomIssueTrackerService .class ));
456
+ }
457
+
458
+ /**
459
+ * Updates the Custom Issue Tracker service settings for a project.
460
+ *
461
+ * <pre><code>GitLab Endpoint: PUT /projects/:id/services/custom_issue_tracker</code></pre>
462
+ *
463
+ * The following properties on the CustomIssueTrackerService instance are utilized in the update of the settings:
464
+ * <p>
465
+ * description (optional), description
466
+ * issuesUrl (required), issue url
467
+ * newIssueUrl (required), new Issue url
468
+ * projectUrl (required), project url
469
+ * pushEvents (optional) - Enable notifications for push events
470
+ * title (optional), the title for the custom issue tracker
471
+ * </p>
472
+ *
473
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
474
+ * @param customIssueTracker the CustomIssueTrackerService instance holding the settings
475
+ * @return a CustomIssueTrackerService instance holding the newly updated settings
476
+ * @throws GitLabApiException if any exception occurs
477
+ */
478
+ public CustomIssueTrackerService updateCustomIssueTrackerService (Object projectIdOrPath , CustomIssueTrackerService customIssueTracker ) throws GitLabApiException {
479
+ GitLabApiForm formData = customIssueTracker .servicePropertiesForm ();
480
+ Response response = put (Response .Status .OK , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "custom-issue-tracker" );
481
+ return (response .readEntity (CustomIssueTrackerService .class ));
482
+ }
483
+
484
+ /**
485
+ * Deletes the Custom Issue Tracker service for a project.
486
+ *
487
+ * <pre><code>GitLab Endpoint: DELETE /projects/:id/services/custom_issue_tracker</code></pre>
488
+ *
489
+ * @param projectIdOrPath id, path of the project, or a Project instance holding the project ID or path
490
+ * @throws GitLabApiException if any exception occurs
491
+ */
492
+ public void deleteCustomIssueTrackerService (Object projectIdOrPath ) throws GitLabApiException {
493
+ delete (Response .Status .OK , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "services" , "custom-issue-tracker" );
494
+
495
+ }
458
496
}
0 commit comments