from fastapi import HTTPException from reader import Reader from discord_rss_bot.missing_tags import add_missing_tags from discord_rss_bot.settings import list_webhooks def add_webhook(reader: Reader, webhook_name: str, webhook_url: str): """Add new webhook. Args: reader: The Reader to use webhook_name: The name of the webhook, this will be shown on the webpage webhook_url: The webhook URL to send entries to Raises: HTTPException: This is raised when the webhook already exists Returns: Returns True if everyting was succesful """ # Get current webhooks from the database if they exist otherwise use an empty list. webhooks: list[dict[str, str]] = list_webhooks(reader) # Only add the webhook if it doesn't already exist. if all(webhook["name"] != webhook_name.strip() for webhook in webhooks): # Add the new webhook to the list of webhooks. webhooks.append({"name": webhook_name.strip(), "url": webhook_url.strip()}) # Add our new list of webhooks to the database. reader.set_tag((), "webhooks", webhooks) # type: ignore add_missing_tags(reader) return True # TODO: Show this error on the page. raise HTTPException(status_code=409, detail="Webhook already exists") def remove_webhook(reader: Reader, webhook_url: str): # Get current webhooks from the database if they exist otherwise use an empty list. webhooks: list[dict[str, str]] = list_webhooks(reader) # Only add the webhook if it doesn't already exist. for webhook in webhooks: if webhook["url"] in webhook_url.strip(): webhooks.remove(webhook) # Check if it has been removed. if webhook in webhooks: raise HTTPException(status_code=500, detail="Webhook could not be deleted") # Add our new list of webhooks to the database. reader.set_tag((), "webhooks", webhooks) # type: ignore return True # TODO: Show this error on the page. raise HTTPException(status_code=404, detail="Webhook not found")