"""webhook models""" from django.db import models from django.utils.translation import gettext as _ from passbook.core.models import Policy from passbook.policies.struct import PolicyRequest, PolicyResult class WebhookPolicy(Policy): """Policy that asks webhook""" METHOD_GET = 'GET' METHOD_POST = 'POST' METHOD_PATCH = 'PATCH' METHOD_DELETE = 'DELETE' METHOD_PUT = 'PUT' METHODS = ( (METHOD_GET, METHOD_GET), (METHOD_POST, METHOD_POST), (METHOD_PATCH, METHOD_PATCH), (METHOD_DELETE, METHOD_DELETE), (METHOD_PUT, METHOD_PUT), ) url = models.URLField() method = models.CharField(max_length=10, choices=METHODS) json_body = models.TextField() json_headers = models.TextField() result_jsonpath = models.TextField() result_json_value = models.TextField() form = 'passbook.policies.webhook.forms.WebhookPolicyForm' def passes(self, request: PolicyRequest) -> PolicyResult: """Call webhook asynchronously and report back""" raise NotImplementedError() class Meta: verbose_name = _('Webhook Policy') verbose_name_plural = _('Webhook Policies')