Source code for ferrosoft.apps.ticketing.api.views
# Copyright (c) 2025 Ferrosoft GmbH. All rights reserved.
import logging
from rest_framework.exceptions import PermissionDenied, ValidationError
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
from rest_framework.viewsets import ViewSet
from ferrosoft.apps.ticketing.api.serializer import TaigaWebhookSerializer
from ferrosoft.apps.ticketing.api.service import WebhookSignatureValidator
[docs]
class TaigaWebhookViewSet(ViewSet):
permission_classes = [AllowAny]
[docs]
def create(self, request, *args, **kwargs):
validator = WebhookSignatureValidator.from_django_settings()
signature = request.headers.get("X-TAIGA-WEBHOOK-SIGNATURE")
if not validator.is_valid(signature, request.body):
raise PermissionDenied("Invalid signature")
serializer = TaigaWebhookSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(
{"status": "success", "message": "Comment added successfully"},
status=200,
)