You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
1.1 KiB
26 lines
1.1 KiB
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from rest_framework.permissions import AllowAny
|
|
from django.conf import settings
|
|
from django.shortcuts import get_object_or_404
|
|
from apps.chat.models import ChatMessage
|
|
from apps.chat.signals import notify_on_new_chat_message
|
|
|
|
class ChatMessageNotifyWebhookView(APIView):
|
|
permission_classes = [AllowAny]
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
token = request.headers.get('X-Internal-Secret') or request.query_params.get('secret')
|
|
if token != getattr(settings, 'INTERNAL_WEBHOOK_SECRET', None):
|
|
return Response({'error': 'Unauthorized'}, status=403)
|
|
|
|
message_id = request.data.get('message_id')
|
|
if not message_id:
|
|
return Response({'error': 'message_id is required'}, status=400)
|
|
|
|
message = get_object_or_404(ChatMessage, id=message_id)
|
|
|
|
# Trigger the notification logic
|
|
notify_on_new_chat_message(sender=ChatMessage, instance=message, created=True)
|
|
|
|
return Response({'status': 'success'})
|