Source code for faust.web.exceptions
"""HTTP and related errors."""
import http
from typing import Any, Dict, cast
from faust.exceptions import FaustError
__all__ = [
'WebError',
'ServerError',
'ValidationError',
'ParseError',
'AuthenticationFailed',
'NotAuthenticated',
'PermissionDenied',
'NotFound',
'MethodNotAllowed',
'NotAcceptable',
'UnsupportedMediaType',
'Throttled',
]
[docs]class WebError(FaustError):
"""Web related error.
Web related errors will have a status :attr:`code`,
and a :attr:`detail` for the human readable error string.
It may also keep :attr:`extra_context`.
"""
code: int = cast(int, None)
detail: str = 'Default not set on class'
extra_context: Dict
def __init__(self, detail: str = None, *,
code: int = None,
**extra_context: Any) -> None:
if detail:
self.detail = detail
if code:
self.code = code
self.extra_context = extra_context
super().__init__(self, detail, code, extra_context)
[docs]class ServerError(WebError):
"""Internal Server Error (500)."""
code = http.HTTPStatus.INTERNAL_SERVER_ERROR
detail = 'Internal server error.'
[docs]class ValidationError(WebError):
"""Invalid input in POST data (400)."""
code = http.HTTPStatus.BAD_REQUEST
detail = 'Invalid input.'
[docs]class ParseError(WebError):
"""Malformed request (400)."""
code = http.HTTPStatus.BAD_REQUEST
detail = 'Malformed request.'
[docs]class AuthenticationFailed(WebError):
"""Incorrect authentication credentials (401)."""
code = http.HTTPStatus.UNAUTHORIZED
detail = 'Incorrect authentication credentials'
[docs]class NotAuthenticated(WebError):
"""Authentication credentials were not provided (401)."""
code = http.HTTPStatus.UNAUTHORIZED
detail = 'Authentication credentials were not provided.'
[docs]class PermissionDenied(WebError):
"""No permission to perform action (403)."""
code = http.HTTPStatus.FORBIDDEN
detail = 'You do not have permission to perform this action.'
[docs]class NotFound(WebError):
"""Resource not found (404)."""
code = http.HTTPStatus.NOT_FOUND
detail = 'Not found.'
[docs]class MethodNotAllowed(WebError):
"""HTTP Method not allowed (405)."""
code = http.HTTPStatus.METHOD_NOT_ALLOWED
detail = 'Method not allowed.'
[docs]class NotAcceptable(WebError):
"""Not able to satisfy the request ``Accept`` header (406)."""
code = http.HTTPStatus.NOT_ACCEPTABLE
detail = 'Could not satisfy the request Accept header.'
[docs]class Throttled(WebError):
"""Client is sending too many requests to server (429)."""
code = http.HTTPStatus.TOO_MANY_REQUESTS
detail = 'Request was throttled.'
class ServiceUnavailable(WebError):
"""Service is temporarily unavailable (503)."""
code = http.HTTPStatus.SERVICE_UNAVAILABLE
detail = 'Service unavailable. Try again later.'