Add rate limit serializers

This commit is contained in:
Ciarán Ainsworth 2022-07-20 13:32:15 +02:00
parent a2cb4cbdc8
commit 0c03c3329b
2 changed files with 26 additions and 1 deletions

View File

@ -335,3 +335,27 @@ class NullToEmptDict(object):
if not v: if not v:
return v return v
return super().to_representation(v) return super().to_representation(v)
class ScopesSerializer(serializers.Serializer):
id = serializers.CharField()
rate = serializers.CharField()
description = serializers.CharField()
limit = serializers.IntegerField()
duration = serializers.IntegerField()
remaining = serializers.IntegerField()
available = serializers.IntegerField()
available_seconds = serializers.IntegerField()
reset = serializers.IntegerField()
reset_seconds = serializers.IntegerField()
class IdentSerializer(serializers.Serializer):
type = serializers.CharField()
id = serializers.IntegerField()
class RateLimitSerializer(serializers.Serializer):
enabled = serializers.BooleanField()
ident = IdentSerializer()
scopes = serializers.ListField(child=ScopesSerializer())

View File

@ -139,6 +139,7 @@ class MutationViewSet(
class RateLimitView(views.APIView): class RateLimitView(views.APIView):
permission_classes = [] permission_classes = []
throttle_classes = [] throttle_classes = []
serializer_class = serializers.RateLimitSerializer
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
ident = throttling.get_ident(getattr(request, "user", None), request) ident = throttling.get_ident(getattr(request, "user", None), request)
@ -147,7 +148,7 @@ class RateLimitView(views.APIView):
"ident": ident, "ident": ident,
"scopes": throttling.get_status(ident, time.time()), "scopes": throttling.get_status(ident, time.time()),
} }
return response.Response(data, status=200) return response.Response(serializers.RateLimitSerializer(data).data, status=200)
class AttachmentViewSet( class AttachmentViewSet(