mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-02-05 02:35:18 -05:00
33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
import logging
|
|
|
|
import requests
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
from rest_framework import status
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
|
|
from apps.core.utils import capture_and_log
|
|
from apps.core.utils.cloudflare import get_direct_upload_url
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class GenerateUploadURLView(APIView):
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def post(self, request):
|
|
try:
|
|
# Pass user_id for metadata if needed
|
|
result = get_direct_upload_url(user_id=str(request.user.id))
|
|
return Response(result, status=status.HTTP_200_OK)
|
|
except ImproperlyConfigured as e:
|
|
capture_and_log(e, 'Generate upload URL - configuration error', source='api')
|
|
return Response({"detail": "Server configuration error."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
except requests.RequestException as e:
|
|
capture_and_log(e, 'Generate upload URL - Cloudflare API error', source='api')
|
|
return Response({"detail": "Failed to generate upload URL."}, status=status.HTTP_502_BAD_GATEWAY)
|
|
except Exception as e:
|
|
capture_and_log(e, 'Generate upload URL - unexpected error', source='api')
|
|
return Response({"detail": "An unexpected error occurred."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|