Source code for simplewebdavclient.exceptions
import logging
from numbers import Number
from http.client import responses as http_codes
__author__ = 'Benjamin P. Trachtenberg'
__copyright__ = "Copyright (c) 2018, Benjamin P. Trachtenberg"
__credits__ = 'Benjamin P. Trachtenberg'
__license__ = 'MIT'
__status__ = 'prod'
__version_info__ = (1, 0, 1)
__version__ = '.'.join(map(str, __version_info__))
__maintainer__ = 'Benjamin P. Trachtenberg'
__email__ = 'e_ben_75-python@yahoo.com'
LOGGER = logging.getLogger(__name__)
[docs]class OperationFailed(Exception):
_OPERATIONS = dict(
HEAD="get header",
GET="download",
PUT="upload",
DELETE="delete",
MKCOL="create directory",
PROPFIND="list directory",
)
def __init__(self, method, path, expected_code, actual_code):
self.method = method
self.path = path
self.expected_code = expected_code
self.actual_code = actual_code
operation_name = self._OPERATIONS[method]
self.reason = 'Failed to {operation_name} "{path}"'.format(**locals())
expected_codes = (expected_code,) if isinstance(expected_code, Number) else expected_code
expected_codes_str = ", ".join('{0} {1}'.format(code, http_codes.get(code, 'UNKNOWN')) for code in expected_codes)
actual_code_str = http_codes.get(actual_code, 'UNKNOWN')
msg = '''
{self.reason}.
Operation : {method} {path}
Expected code : {expected_codes_str}
Actual code : {actual_code} {actual_code_str}'''.format(**locals())
LOGGER.critical(msg)
[docs]class BadPortNumber(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
LOGGER.critical(self.value)
return repr(self.value)
[docs]class NotNumber(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
LOGGER.critical(self.value)
return repr(self.value)
[docs]class CouldNotDetermineProtocol(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
LOGGER.critical(self.value)
return repr(self.value)