From 5b97d336959ef125262a221887175df0046f9631 Mon Sep 17 00:00:00 2001 From: Josef Zweck <24647999+zweckj@users.noreply.github.com> Date: Sun, 25 Feb 2024 08:12:52 +0100 Subject: [PATCH] add webhook cleanup by host --- example.py | 8 ++++++-- pytedee_async/tedee_client.py | 17 +++++++++++++++++ setup.py | 2 +- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/example.py b/example.py index 8aeab7d..0b88286 100644 --- a/example.py +++ b/example.py @@ -1,13 +1,16 @@ """Test run.""" + import asyncio import json +from pathlib import Path + from pytedee_async import TedeeClient from pytedee_async.lock import TedeeLock async def main(): - with open("config.json", encoding="utf-8") as f: + with open(f"{Path(__file__).parent}/config.json", encoding="utf-8") as f: data = json.load(f) personal_token = data["personalToken"] ip = data["ip"] @@ -15,7 +18,8 @@ async def main(): # client = await TedeeClient.create(personal_token, local_token, ip) client = TedeeClient(local_ip=ip, local_token=local_token) - bridge = await client.get_local_bridge() + await client.cleanup_webhooks_by_host("test") + # bridge = await client.get_local_bridge() # await client.delete_webhook(5) # await client.register_webhook("http://192.168.1.151/events") await client.get_locks() diff --git a/pytedee_async/tedee_client.py b/pytedee_async/tedee_client.py index 3cf8b19..c8f7adc 100644 --- a/pytedee_async/tedee_client.py +++ b/pytedee_async/tedee_client.py @@ -1,4 +1,5 @@ """The TedeeClient class.""" + from __future__ import annotations import asyncio @@ -512,3 +513,19 @@ async def delete_webhook(self, webhook_id: int) -> None: except TedeeDataUpdateException as ex: _LOGGER.debug("Unable to delete webhook: %s", str(ex)) _LOGGER.debug("Webhook deleted successfully.") + + async def cleanup_webhooks_by_host(self, host: str) -> None: + """Delete all webhooks for a specific host""" + _LOGGER.debug("Deleting webhooks for host %s", host) + try: + success, result = await self._local_api_call("/callback", HTTPMethod.GET) + except TedeeDataUpdateException as ex: + _LOGGER.debug("Unable to get webhooks: %s", str(ex)) + return + if not success or result is None: + _LOGGER.debug("Unable to get webhooks") + return + for webhook in result: + if host in webhook["url"]: + await self.delete_webhook(webhook["id"]) + _LOGGER.debug("Webhooks deleted successfully.") diff --git a/setup.py b/setup.py index 069d795..3ac2e66 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setuptools.setup( name="pytedee_async", - version="0.2.13", + version="0.2.14", author="Josef Zweck", author_email="24647999+zweckj@users.noreply.github.com", description="A Tedee Lock Client package",