""" Tencent Cloud TIIA simplified APIs. Currently provides: - SearchImage (by ImageUrl) with fixed groupId/region from settings. """ from rest_framework import status from rest_framework.permissions import IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView from django.conf import settings from api_v1.utils.tencentcloud_tiia import SimpleRateLimiter, search_image_url_in_tencent_tiia class TiiaSearchImageView(APIView): """ Tencent Cloud TIIA: SearchImage (simplified) POST /api/v1/tiia/search-image/ Body: { "imageUrl": "https://example.com/xxx.png" } Notes: - groupId/region/endpoint are configured via Django settings (TENCENTCLOUD_TIIA_*). - Enforces QPS using settings.TENCENTCLOUD_TIIA_QPS (default 10). """ permission_classes = [IsAuthenticated] def post(self, request): image_url = ( request.data.get('imageUrl') or request.data.get('ImageUrl') or request.data.get('image_url') or request.data.get('ImageURL') ) try: limiter = SimpleRateLimiter(qps=float(getattr(settings, 'TENCENTCLOUD_TIIA_QPS', 10))) resp = search_image_url_in_tencent_tiia( image_url=str(image_url or ''), rate_limiter=limiter, ) return Response(resp, status=status.HTTP_200_OK) except ValueError as e: return Response({'error': str(e)}, status=status.HTTP_400_BAD_REQUEST) except Exception as e: return Response( {'error': '腾讯云搜图失败', 'message': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR, )