Source code for gerrit.projects.webhooks
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author: Jialiang Shi
from typing import Any, Dict, List
from gerrit import GerritClient
from gerrit.utils.gerritbase import GerritBase
[docs]
class GerritProjectWebHook(GerritBase):
def __init__(self, name: str, project: str, gerrit: GerritClient) -> None:
self.name = name
self.project = project
self.gerrit = gerrit
self.endpoint = (
f"/config/server/webhooks~projects/{self.project}/remotes/{self.name}"
)
super().__init__()
def __str__(self) -> str:
return self.name
[docs]
def delete(self) -> None:
"""
Delete a webhook for a project.
:return:
"""
self.gerrit.delete(self.endpoint)
[docs]
class GerritProjectWebHooks:
def __init__(self, project: str, gerrit: GerritClient) -> None:
self.project = project
self.gerrit = gerrit
self.endpoint = f"/config/server/webhooks~projects/{self.project}/remotes"
[docs]
def list(self) -> List[Any]:
"""
List existing webhooks for a project.
:return:
"""
result = self.gerrit.get(self.endpoint + "/")
return result
[docs]
def create(self, name: str, input_: Dict[str, Any]) -> Any:
"""
Create or update a webhook for a project.
.. code-block:: python
input_ = {
"url": "https://foo.org/gerrit-events",
"maxTries": "3",
"sslVerify": "true"
}
project = client.projects.get('myproject')
new_webhook = project.webhooks.create('test', input_)
:param name: the webhook name
:param input_: the RemoteInfo entity
:return:
"""
result = self.gerrit.put(
self.endpoint + f"/{name}", json=input_, headers=self.gerrit.default_headers
)
return result
[docs]
def get(self, name: str) -> Any:
"""
Get information about one webhook.
:param name: the webhook name
:return:
"""
result = self.gerrit.get(self.endpoint + f"/{name}")
name = result.get("name")
return GerritProjectWebHook(name=name, project=self.project, gerrit=self.gerrit)
[docs]
def delete(self, name: str) -> None:
"""
Delete a webhook for a project.
:param name: the webhook name
:return:
"""
self.gerrit.delete(self.endpoint + f"/{name}")