Files
GIA/core/views/queues.py

57 lines
1.6 KiB
Python

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)