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}")