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
			
		
		
			
		
	
	
					28 lines
				
				657 B
			| 
								 
											3 years ago
										 
									 | 
							
								"""
							 | 
						||
| 
								 | 
							
								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)
							 |