from rest_framework.throttling import SimpleRateThrottle


class APIKeyRateThrottle(SimpleRateThrottle):
    scope = "api_key"
    rate = "60/minute"

    def allow_request(self, request, view):
        self.request = request
        self.rate = "600/minute" if getattr(request.auth, "plan", "standard") == "enterprise" else "60/minute"
        self.num_requests, self.duration = self.parse_rate(self.rate)
        return super().allow_request(request, view)

    def get_cache_key(self, request, view):
        if not request.auth:
            return None
        return self.cache_format % {"scope": self.scope, "ident": request.auth.key_hash}
