diff --git a/gitlab/exceptions.py b/gitlab/exceptions.py index 3fb0613e5..c5934af5f 100644 --- a/gitlab/exceptions.py +++ b/gitlab/exceptions.py @@ -111,6 +111,10 @@ class GitlabMROnBuildSuccessError(GitlabOperationError): pass +class GitlabServiceSlackError(GitlabOperationError): + pass + + def raise_error_from_response(response, error, expected_code=200): """Tries to parse gitlab error message from response and raises error. diff --git a/gitlab/objects.py b/gitlab/objects.py index 42d5b38ee..bcb842c19 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -2067,6 +2067,19 @@ def share(self, group_id, group_access, **kwargs): r = self.gitlab._raw_post(url, data=data, **kwargs) raise_error_from_response(r, GitlabCreateError, 201) + def slack_service(self, webhook, username=None, channel=None, **kwargs): + url = "/projects/%s/services/slack" % self.id + r = self.gitlab._raw_put( + url, + data={ + 'webhook': webhook, + 'username': username, + 'channel': channel + }, + **kwargs + ) + raise_error_from_response(r, GitlabServiceSlackError) + class Runner(GitlabObject): _url = '/runners'