You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
657 B

"""
errors and exceptions
"""
from starlette.exceptions import HTTPException
from .wrappers import Limit
class RateLimitExceeded(HTTPException):
"""
exception raised when a rate limit is hit.
"""
limit = None
def __init__(self, limit: Limit) -> None:
self.limit = limit
if limit.error_message:
description: str = (
limit.error_message
if not callable(limit.error_message)
else limit.error_message()
)
else:
description = str(limit.limit)
super(RateLimitExceeded, self).__init__(status_code=429, detail=description)