mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-27 08:07:04 -05:00
38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
from rest_framework.views import APIView
|
|
from rest_framework.response import Response
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework import status
|
|
from apps.core.utils.cloudflare import get_direct_upload_url
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
import requests
|
|
import logging
|
|
|
|
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:
|
|
logger.error(f"Configuration Error: {e}")
|
|
return Response(
|
|
{"detail": "Server configuration error."},
|
|
status=status.HTTP_500_INTERNAL_SERVER_ERROR
|
|
)
|
|
except requests.RequestException as e:
|
|
logger.error(f"Cloudflare API Error: {e}")
|
|
return Response(
|
|
{"detail": "Failed to generate upload URL."},
|
|
status=status.HTTP_502_BAD_GATEWAY
|
|
)
|
|
except Exception as e:
|
|
logger.exception("Unexpected error generating upload URL")
|
|
return Response(
|
|
{"detail": "An unexpected error occurred."},
|
|
status=status.HTTP_500_INTERNAL_SERVER_ERROR
|
|
)
|