Coverage for icloudpy/exceptions.py: 79%

19 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2024-04-12 14:26 +0000

1"""Library exceptions.""" 

2 

3 

4class ICloudPyException(Exception): 

5 """Generic iCloud exception.""" 

6 

7 

8# API 

9class ICloudPyAPIResponseException(ICloudPyException): 

10 """iCloud response exception.""" 

11 

12 def __init__(self, reason, code=None, retry=False): 

13 self.reason = reason 

14 self.code = code 

15 message = reason or "" 

16 if code: 

17 message += f" ({code})" 

18 if retry: 

19 message += ". Retrying ..." 

20 

21 super().__init__(message) 

22 

23 

24class ICloudPyServiceNotActivatedException(ICloudPyAPIResponseException): 

25 """iCloud service not activated exception.""" 

26 

27 

28# Login 

29class ICloudPyFailedLoginException(ICloudPyException): 

30 """iCloud failed login exception.""" 

31 

32 

33class ICloudPy2SARequiredException(ICloudPyException): 

34 """iCloud 2SA required exception.""" 

35 

36 def __init__(self, apple_id): 

37 message = f"Two-step authentication required for account:{apple_id}" 

38 super().__init__(message) 

39 

40 

41class ICloudPyNoStoredPasswordAvailableException(ICloudPyException): 

42 """iCloud no stored password exception.""" 

43 

44 

45# Webservice specific 

46class ICloudPyNoDevicesException(ICloudPyException): 

47 """iCloud no device exception."""