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.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: 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: logger.exception("Unexpected error generating upload URL") return Response({"detail": "An unexpected error occurred."}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)