Now webhook test and webhooklog resend endpoints return the generated webhooklog object

remotes/origin/enhancement/email-actions
Jesús Espino 2015-01-22 13:37:41 +01:00
parent 00d94cdeca
commit 97cec70d55
3 changed files with 27 additions and 22 deletions

View File

@ -42,9 +42,10 @@ class WebhookViewSet(ModelCrudViewSet):
webhook = self.get_object() webhook = self.get_object()
self.check_permissions(request, 'test', webhook) self.check_permissions(request, 'test', webhook)
tasks.test_webhook(webhook.id, webhook.url, webhook.key) webhooklog = tasks.test_webhook(webhook.id, webhook.url, webhook.key)
log = serializers.WebhookLogSerializer(webhooklog)
return Response() return Response(log.data)
class WebhookLogViewSet(ModelListViewSet): class WebhookLogViewSet(ModelListViewSet):
model = models.WebhookLog model = models.WebhookLog
@ -60,6 +61,7 @@ class WebhookLogViewSet(ModelListViewSet):
webhook = webhooklog.webhook webhook = webhooklog.webhook
tasks.resend_webhook(webhook.id, webhook.url, webhook.key, webhooklog.request_data) webhooklog = tasks.resend_webhook(webhook.id, webhook.url, webhook.key, webhooklog.request_data)
log = serializers.WebhookLogSerializer(webhooklog)
return Response() return Response(log.data)

View File

@ -44,6 +44,8 @@ class WebhookSerializer(serializers.ModelSerializer):
class WebhookLogSerializer(serializers.ModelSerializer): class WebhookLogSerializer(serializers.ModelSerializer):
request_data = JsonField() request_data = JsonField()
request_headers = JsonField()
response_headers = JsonField()
class Meta: class Meta:
model = WebhookLog model = WebhookLog

View File

@ -70,24 +70,25 @@ def _send_request(webhook_id, url, key, data):
session = requests.Session() session = requests.Session()
try: try:
response = session.send(prepared_request) response = session.send(prepared_request)
WebhookLog.objects.create(webhook_id=webhook_id, url=url, webhook_log = WebhookLog.objects.create(webhook_id=webhook_id, url=url,
status=response.status_code, status=response.status_code,
request_data=data, request_data=data,
request_headers=dict(prepared_request.headers), request_headers=dict(prepared_request.headers),
response_data=response.content, response_data=response.content,
response_headers=dict(response.headers), response_headers=dict(response.headers),
duration=response.elapsed.total_seconds()) duration=response.elapsed.total_seconds())
except RequestException as e: except RequestException as e:
WebhookLog.objects.create(webhook_id=webhook_id, url=url, status=0, webhook_log = WebhookLog.objects.create(webhook_id=webhook_id, url=url, status=0,
request_data=data, request_data=data,
request_headers=dict(prepared_request.headers), request_headers=dict(prepared_request.headers),
response_data="error-in-request: {}".format(str(e)), response_data="error-in-request: {}".format(str(e)),
response_headers={}, response_headers={},
duration=0) duration=0)
session.close() session.close()
ids = [webhook_log.id for webhook_log in WebhookLog.objects.filter(webhook_id=webhook_id).order_by("-id")[10:]] ids = [webhook_log.id for webhook_log in WebhookLog.objects.filter(webhook_id=webhook_id).order_by("-id")[10:]]
WebhookLog.objects.filter(id__in=ids).delete() WebhookLog.objects.filter(id__in=ids).delete()
return webhook_log
@app.task @app.task
@ -98,7 +99,7 @@ def change_webhook(webhook_id, url, key, obj, change):
data['type'] = _get_type(obj) data['type'] = _get_type(obj)
data['change'] = _serialize(change) data['change'] = _serialize(change)
_send_request(webhook_id, url, key, data) return _send_request(webhook_id, url, key, data)
@app.task @app.task
@ -108,7 +109,7 @@ def create_webhook(webhook_id, url, key, obj):
data['action'] = "create" data['action'] = "create"
data['type'] = _get_type(obj) data['type'] = _get_type(obj)
_send_request(webhook_id, url, key, data) return _send_request(webhook_id, url, key, data)
@app.task @app.task
@ -118,12 +119,12 @@ def delete_webhook(webhook_id, url, key, obj):
data['action'] = "delete" data['action'] = "delete"
data['type'] = _get_type(obj) data['type'] = _get_type(obj)
_send_request(webhook_id, url, key, data) return _send_request(webhook_id, url, key, data)
@app.task @app.task
def resend_webhook(webhook_id, url, key, data): def resend_webhook(webhook_id, url, key, data):
_send_request(webhook_id, url, key, data) return _send_request(webhook_id, url, key, data)
@app.task @app.task
@ -133,5 +134,5 @@ def test_webhook(webhook_id, url, key):
data['action'] = "test" data['action'] = "test"
data['type'] = "test" data['type'] = "test"
_send_request(webhook_id, url, key, data) return _send_request(webhook_id, url, key, data)