chat/apps/chat/views/presign.py
2026-07-26 11:21:53 +03:30

30 lines
997 B
Python

from drf_spectacular.utils import extend_schema
from rest_framework import status
from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet
from apps.chat.serializers.presign import PresignResultSerializer, SignContentSerializer
from apps.chat.services.storage import StorageService
class PresignViewSet(GenericViewSet):
authentication_classes = []
permission_classes = []
serializer_class = SignContentSerializer
@extend_schema(
request=SignContentSerializer,
responses={201: PresignResultSerializer},
)
def create(self, request):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
upload_url, object_key = StorageService().get_upload_url(
serializer.validated_data["filename"]
)
return Response(
{"upload_url": upload_url, "object_key": object_key},
status=status.HTTP_201_CREATED,
)