import typing

from apps.webhooks.models import Webhook
from apps.webhooks.presets.preset import WebhookPreset, WebhookPresetMetadata


class SimpleWebhookPreset(WebhookPreset):
    def _metadata(self) -> WebhookPresetMetadata:
        return WebhookPresetMetadata(
            id="simple_webhook",
            name="Simple",
            logo="webhook",
            description="A simple webhook which sends the alert group data to a given URL. Triggered as an escalation step.",
            controlled_fields=[
                "trigger_type",
                "http_method",
                "integration_filter",
                "headers",
                "username",
                "password",
                "authorization_header",
                "trigger_template",
                "forward_all",
                "data",
            ],
        )

    def override_parameters_before_save(self, webhook: Webhook):
        webhook.http_method = "POST"
        webhook.trigger_type = Webhook.TRIGGER_MANUAL
        webhook.forward_all = True

    def override_parameters_at_runtime(self, webhook: Webhook):
        pass

    def get_masked_headers(self) -> typing.List[str]:
        return []
