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")
 | 
