"""Errors not related to the Telegram API itself""" import struct import textwrap from ..tl import TLRequest class ReadCancelledError(Exception): """Occurs when a read operation was cancelled.""" def __init__(self): super().__init__('The read operation was cancelled.') class TypeNotFoundError(Exception): """ Occurs when a type is not found, for example, when trying to read a TLObject with an invalid constructor code. """ def __init__(self, invalid_constructor_id, remaining): super().__init__( 'Could not find a matching Constructor ID for the TLObject ' 'that was supposed to be read with ID {:08x}. Most likely, ' 'a TLObject was trying to be read when it should not be read. ' 'Remaining bytes: {!r}'.format(invalid_constructor_id, remaining)) self.invalid_constructor_id = invalid_constructor_id self.remaining = remaining class InvalidChecksumError(Exception): """ Occurs when using the TCP full mode and the checksum of a received packet doesn't match the expected checksum. """ def __init__(self, checksum, valid_checksum): super().__init__( 'Invalid checksum ({} when {} was expected). ' 'This packet should be skipped.' .format(checksum, valid_checksum)) self.checksum = checksum self.valid_checksum = valid_checksum class InvalidBufferError(BufferError): """ Occurs when the buffer is invalid, and may contain an HTTP error code. For instance, 404 means "forgotten/broken authorization key", while """ def __init__(self, payload): self.payload = payload if len(payload) == 4: self.code = -struct.unpack('