Files
shopship/apps/telemetry/api/views.py
T

25 lines
1.1 KiB
Python
Raw Normal View History

2026-08-31 15:11:52 +03:30
from rest_framework import status
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from .serializers import TelemetryBatchSerializer
from .services import TelemetryIngestService
class TelemetryEventsView(APIView):
"""اپ فلاتر دوره‌ای (و موقعِ بستن) یک دسته رویداد اینجا می‌فرستد —
صفحه‌بازدید، کلیک، خطا، شروع/پایانِ جلسه. لاگین لازم است چون این
مانیتورینگ «به‌ازای کاربر» است، نه ترافیکِ ناشناس."""
permission_classes = [IsAuthenticated]
def post(self, request):
serializer = TelemetryBatchSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
ip = request.META.get("HTTP_X_FORWARDED_FOR", "").split(",")[0].strip() or request.META.get(
"REMOTE_ADDR"
)
TelemetryIngestService.ingest(request.user, ip, serializer.validated_data)
return Response({"success": True}, status=status.HTTP_201_CREATED)