Source code for aiohttp.errors
"""http related errors."""
__all__ = [
'DisconnectedError', 'ClientDisconnectedError', 'ServerDisconnectedError',
'HttpProcessingError', 'BadHttpMessage',
'HttpMethodNotAllowed', 'HttpBadRequest', 'HttpProxyError',
'BadStatusLine', 'LineTooLong', 'InvalidHeader',
'ClientError', 'ClientHttpProcessingError', 'ClientConnectionError',
'ClientOSError', 'ClientTimeoutError', 'ProxyConnectionError',
'ClientRequestError', 'ClientResponseError']
from asyncio import TimeoutError
[docs]class DisconnectedError(Exception):
"""disconnected."""
[docs]class ClientDisconnectedError(DisconnectedError):
"""Client disconnected."""
[docs]class ServerDisconnectedError(DisconnectedError):
"""Server disconnected."""
[docs]class ClientError(Exception):
"""Base class for client connection errors."""
[docs]class ClientHttpProcessingError(ClientError):
"""Base class for client http processing errors."""
[docs]class ClientRequestError(ClientHttpProcessingError):
"""Connection error during sending request."""
[docs]class ClientResponseError(ClientHttpProcessingError):
"""Connection error during reading response."""
[docs]class ClientConnectionError(ClientError):
"""Base class for client socket errors."""
[docs]class ClientOSError(ClientConnectionError, OSError):
"""OSError error."""
[docs]class ClientTimeoutError(ClientConnectionError, TimeoutError):
"""Client connection timeout error."""
[docs]class ProxyConnectionError(ClientConnectionError):
"""Proxy connection error.
Raised in :class:`aiohttp.connector.ProxyConnector` if
connection to proxy can not be established.
"""
[docs]class HttpProcessingError(Exception):
"""Http error.
Shortcut for raising http errors with custom code, message and headers.
:param int code: HTTP Error code.
:param str message: (optional) Error message.
:param list of [tuple] headers: (optional) Headers to be sent in response.
"""
code = 0
message = ''
headers = None
def __init__(self, *, code=None, message='', headers=None):
if code is not None:
self.code = code
self.headers = headers
self.message = message
super().__init__("%s, message='%s'" % (self.code, message))
[docs]class HttpProxyError(HttpProcessingError):
"""Http proxy error.
Raised in :class:`aiohttp.connector.ProxyConnector` if
proxy responds with status other than ``200 OK``
on ``CONNECT`` request.
"""
[docs]class BadHttpMessage(HttpProcessingError):
code = 400
message = 'Bad Request'
def __init__(self, message):
super().__init__(message=message)
[docs]class HttpMethodNotAllowed(HttpProcessingError):
code = 405
message = 'Method Not Allowed'
[docs]class HttpBadRequest(BadHttpMessage):
code = 400
message = 'Bad Request'
class ContentEncodingError(BadHttpMessage):
"""Content encoding error."""
class TransferEncodingError(BadHttpMessage):
"""transfer encoding error."""
[docs]class BadStatusLine(BadHttpMessage):
def __init__(self, line=''):
if not line:
line = repr(line)
self.args = line,
self.line = line
class ParserError(Exception):
"""Base parser error."""
class LineLimitExceededParserError(ParserError):
"""Line is too long."""
def __init__(self, msg, limit):
super().__init__(msg)
self.limit = limit