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