mirror of
https://github.com/N4S4/synology-api.git
synced 2025-08-02 00:23:30 +00:00
321 lines
12 KiB
Python
321 lines
12 KiB
Python
from .error_codes import error_codes, auth_error_codes, download_station_error_codes, file_station_error_codes
|
|
from .error_codes import virtualization_error_codes
|
|
|
|
|
|
# Base exception:
|
|
class SynoBaseException(Exception):
|
|
"""Base class for an exception. Defines error_message."""
|
|
|
|
def __init__(self, error_message: str, *args: object) -> None:
|
|
super().__init__(*args)
|
|
self.error_message = error_message
|
|
return
|
|
|
|
|
|
# Classes to reraise Exceptions from requests.
|
|
class SynoConnectionError(SynoBaseException):
|
|
"""Class to raise when a connection error occurs."""
|
|
|
|
def __init__(self, error_message: str, *args: object) -> None:
|
|
super().__init__(error_message=error_message, *args)
|
|
return
|
|
|
|
|
|
class HTTPError(SynoBaseException):
|
|
"""Class to raise when a http error occurs."""
|
|
|
|
def __init__(self, error_message: str, *args: object) -> None:
|
|
super().__init__(error_message, *args)
|
|
return
|
|
|
|
|
|
class JSONDecodeError(SynoBaseException):
|
|
"""Class to raise when server fails to send JSON."""
|
|
|
|
def __init__(self, error_message: str, *args: object) -> None:
|
|
super().__init__(error_message, *args)
|
|
return
|
|
|
|
|
|
# Classes for when we receive an error code in the JSON from the server.
|
|
class LoginError(SynoBaseException):
|
|
"""Class for an error during login."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code: int = error_code
|
|
if error_code not in error_codes.keys():
|
|
super().__init__(error_message=auth_error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
return
|
|
|
|
|
|
class LogoutError(SynoBaseException):
|
|
"""Class for an error during logout."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code: int = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message=auth_error_codes[error_code], *args)
|
|
return
|
|
|
|
|
|
class DownloadStationError(SynoBaseException):
|
|
"""Class for an error during a download station request."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code: int = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
elif error_code in download_station_error_codes.keys():
|
|
super().__init__(error_message=download_station_error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="DownloadStation Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class FileStationError(SynoBaseException):
|
|
"""Class for an error during a file station request."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code: int = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
elif error_code in file_station_error_codes.keys():
|
|
super().__init__(error_message=file_station_error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="FileStation Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class VirtualizationError(SynoBaseException):
|
|
"""Class for an error during a virtualization request."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
elif error_code in virtualization_error_codes.keys():
|
|
super().__init__(error_message=virtualization_error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="Virtualization Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class AudioStationError(SynoBaseException):
|
|
"""Class for an error during an audio station request. NOTE: I can't find any documentation on the audio station
|
|
webAPI errors numbers and their respective messages."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="AudioStation Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class ActiveBackupError(SynoBaseException):
|
|
"""Class for an error during ActiveBackup request. NOTE: I can't find any documentation on error codes or their
|
|
respective messages."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message='ActiveBackup Error: %i' % error_code, *args)
|
|
|
|
|
|
class BackupError(SynoBaseException):
|
|
"""Class for an error during backup request. NOTE: Again I can't find error code documentation."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="Backup Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class CertificateError(SynoBaseException):
|
|
"""Class for an error during Core.Certificate request. NOTE: Lacking documentation."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code])
|
|
else:
|
|
super().__init__(error_message="Certificate Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class DHCPServerError(SynoBaseException):
|
|
"""Class for an error during a DHCPServer request."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="DHCPServer Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class DirectoryServerError(SynoBaseException):
|
|
"""Class for an error during a directory server request. NOTE: No docs on errors."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="DirectoryServer Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class DockerError(SynoBaseException):
|
|
"""Class for an error during a docker request. NOTE: No docs on errors."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="Docker Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class DriveAdminError(SynoBaseException):
|
|
"""Class for an error during a drive admin request. NOTE: No error docs."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="DriveAdmin Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class LogCenterError(SynoBaseException):
|
|
"""Class for an error during a LogCenter request. NOTE: No docs on errors.... again."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="LogCenter Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class NoteStationError(SynoBaseException):
|
|
"""Class for an error during a NoteStation request. NOTE: No error docs."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="NoteStation Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class OAUTHError(SynoBaseException):
|
|
"""Class for an error during a OAUTH request. NOTE: No error docs."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="OAUTH Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class PhotosError(SynoBaseException):
|
|
"""Class for an error during a Photos request. NOTE: No error docs."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="Photos Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class SecurityAdvisorError(SynoBaseException):
|
|
"""Class for an error during a SecurityAdvisor request. NOTE: What docs?"""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="SecurityAdvisor Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class UniversalSearchError(SynoBaseException):
|
|
"""Class for an error during UniversalSearch request. NOTE:... no docs on errors...."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="UniversalSearch Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class USBCopyError(SynoBaseException):
|
|
"""Class for an error during a USBCopy request. NOTE: No docs on errors."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="USBCopy Error: %i" % error_code, *args)
|
|
|
|
|
|
class VPNError(SynoBaseException):
|
|
"""Class for an error during a VPN request. NOTE: No docs on errors."""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="VPN Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class CoreSysInfoError(SynoBaseException):
|
|
"""Class for an error during a SYNO.Core.*, 'SYNO.Backup.Service.NetworkBackup', SYNO.Storage.*,
|
|
'SYNO.Finder.FileIndexing.Status', 'SYNO.S2S.Server.Pair', SYNO.ResourceMonitor.*
|
|
"""
|
|
|
|
def __init__(self, error_code: int, *args: object) -> None:
|
|
self.error_code = error_code
|
|
if error_code in error_codes.keys():
|
|
super().__init__(error_message=error_codes[error_code], *args)
|
|
else:
|
|
super().__init__(error_message="CoreSysInfo Error: %i" % error_code, *args)
|
|
return
|
|
|
|
|
|
class UndefinedError(SynoBaseException):
|
|
"""Class for undefined errors."""
|
|
|
|
def __init__(self, error_code: int, api_name: str, *args: object) -> None:
|
|
self.error_code = error_code
|
|
self.api_name = api_name
|
|
super().__init__(error_message="Undefined Error: API: %s, Code: %i" % (api_name, error_code), *args)
|
|
return
|