43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""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")
 |