♻️(backend) extract throttling classes into a module
Extract throttling classes into a dedicated Python module, following the structure of suitenumerique/docs. This is a preparatory refactor to ease upcoming changes to the throttling implementation. No functional behavior change is introduced in this commit.
This commit is contained in:
committed by
aleb_the_flash
parent
3887255e9c
commit
23de7e52bc
14
src/backend/core/api/throttling.py
Normal file
14
src/backend/core/api/throttling.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
"""Throttling modules for the API."""
|
||||||
|
|
||||||
|
from rest_framework import throttling
|
||||||
|
|
||||||
|
class RequestEntryAnonRateThrottle(throttling.AnonRateThrottle):
|
||||||
|
"""Throttle Anonymous user requesting room entry"""
|
||||||
|
|
||||||
|
scope = "request_entry"
|
||||||
|
|
||||||
|
|
||||||
|
class CreationCallbackAnonRateThrottle(throttling.AnonRateThrottle):
|
||||||
|
"""Throttle Anonymous user requesting room generation callback"""
|
||||||
|
|
||||||
|
scope = "creation_callback"
|
||||||
@@ -10,7 +10,7 @@ from django.http import Http404
|
|||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
|
||||||
from rest_framework import decorators, mixins, pagination, throttling, viewsets
|
from rest_framework import decorators, mixins, pagination, viewsets
|
||||||
from rest_framework import (
|
from rest_framework import (
|
||||||
exceptions as drf_exceptions,
|
exceptions as drf_exceptions,
|
||||||
)
|
)
|
||||||
@@ -58,7 +58,7 @@ from core.services.room_creation import RoomCreation
|
|||||||
from core.services.subtitle import SubtitleException, SubtitleService
|
from core.services.subtitle import SubtitleException, SubtitleService
|
||||||
|
|
||||||
from ..authentication.livekit import LiveKitTokenAuthentication
|
from ..authentication.livekit import LiveKitTokenAuthentication
|
||||||
from . import permissions, serializers
|
from . import permissions, serializers, throttling
|
||||||
from .feature_flag import FeatureFlag
|
from .feature_flag import FeatureFlag
|
||||||
|
|
||||||
# pylint: disable=too-many-ancestors
|
# pylint: disable=too-many-ancestors
|
||||||
@@ -191,18 +191,6 @@ class UserViewSet(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class RequestEntryAnonRateThrottle(throttling.AnonRateThrottle):
|
|
||||||
"""Throttle Anonymous user requesting room entry"""
|
|
||||||
|
|
||||||
scope = "request_entry"
|
|
||||||
|
|
||||||
|
|
||||||
class CreationCallbackAnonRateThrottle(throttling.AnonRateThrottle):
|
|
||||||
"""Throttle Anonymous user requesting room generation callback"""
|
|
||||||
|
|
||||||
scope = "creation_callback"
|
|
||||||
|
|
||||||
|
|
||||||
class RoomViewSet(
|
class RoomViewSet(
|
||||||
mixins.CreateModelMixin,
|
mixins.CreateModelMixin,
|
||||||
mixins.DestroyModelMixin,
|
mixins.DestroyModelMixin,
|
||||||
@@ -379,7 +367,7 @@ class RoomViewSet(
|
|||||||
methods=["post"],
|
methods=["post"],
|
||||||
url_path="request-entry",
|
url_path="request-entry",
|
||||||
permission_classes=[],
|
permission_classes=[],
|
||||||
throttle_classes=[RequestEntryAnonRateThrottle],
|
throttle_classes=[throttling.RequestEntryAnonRateThrottle],
|
||||||
)
|
)
|
||||||
def request_entry(self, request, pk=None): # pylint: disable=unused-argument
|
def request_entry(self, request, pk=None): # pylint: disable=unused-argument
|
||||||
"""Request entry to a room"""
|
"""Request entry to a room"""
|
||||||
@@ -489,7 +477,7 @@ class RoomViewSet(
|
|||||||
methods=["post"],
|
methods=["post"],
|
||||||
url_path="creation-callback",
|
url_path="creation-callback",
|
||||||
permission_classes=[],
|
permission_classes=[],
|
||||||
throttle_classes=[CreationCallbackAnonRateThrottle],
|
throttle_classes=[throttling.CreationCallbackAnonRateThrottle],
|
||||||
)
|
)
|
||||||
def creation_callback(self, request):
|
def creation_callback(self, request):
|
||||||
"""Retrieve cached room data via an unauthenticated request with a unique ID.
|
"""Retrieve cached room data via an unauthenticated request with a unique ID.
|
||||||
|
|||||||
Reference in New Issue
Block a user