from rest_framework.views import APIView from django.contrib.auth.mixins import LoginRequiredMixin from rest_framework import status from django.http import HttpResponse from core.models import QueuedMessage, Message import requests import orjson from django.conf import settings import redis import msgpack # def start_typing(uuid): # url = f"http://signal:8080/v1/typing_indicator/{settings.SIGNAL_NUMBER}" # data = { # "recipient": uuid, # } # response = requests.put(url, json=data) # def stop_typing(uuid): # url = f"http://signal:8080/v1/typing_indicator/{settings.SIGNAL_NUMBER}" # data = { # "recipient": uuid, # } # response = requests.delete(url, json=data) r = redis.from_url("unix://var/run/gia-redis.sock", db=10) class AcceptMessageAPI(LoginRequiredMixin, APIView): def get(self, request, message_id): to_submit = { "type": "def", "method": "accept_message", "user_id": request.user.id, "message_id": message_id, } packed = msgpack.packb(to_submit, use_bin_type=True) r.publish("processing", packed) return HttpResponse(status=status.HTTP_200_OK) class RejectMessageAPI(LoginRequiredMixin, APIView): def get(self, request, message_id): try: message = QueuedMessage.objects.get( user=self.request.user, id=message_id, ) except QueuedMessage.DoesNotExist: return HttpResponse(status=status.HTTP_404_NOT_FOUND) message.delete() return HttpResponse(status=status.HTTP_200_OK)