3 """This module contains custom exceptions that are raised by diaspy.
4 These are not described by DIASPORA* protocol as exceptions that should be
5 raised by API implementations but are specific to this particular implementation.
7 If your program should catch all exceptions raised by diaspy and
8 does not need to handle them specifically you can use following code:
10 # this line imports all errors
11 from diaspy.errors import *
15 except DiaspyError as e:
16 # your error handling code...
24 class DiaspyError(Exception):
25 """Base exception for all errors
31 class LoginError(DiaspyError
):
32 """Exception raised when something
33 bad happens while performing actions
34 related to logging in.
39 class TokenError(DiaspyError
):
42 class CSRFProtectionKickedIn(TokenError
):
46 class DataError(DiaspyError
):
50 class InvalidDataError(DataError
):
54 class KeyMissingFromFetchedData(InvalidDataError
):
58 class UserError(DiaspyError
):
59 """Exception raised when something related to users goes wrong.
64 class InvalidHandleError(DiaspyError
):
65 """Raised when invalid handle is found.
70 class SearchError(DiaspyError
):
71 """Exception raised when something related to search goes wrong.
75 class NotificationError(DiaspyError
):
76 """Exception raised when something related to notifications goes wrong.
80 class ConversationError(DiaspyError
):
81 """Exception raised when something related to conversations goes wrong.
86 class AspectError(DiaspyError
):
87 """Exception raised when something related to aspects goes wrong.
91 class UserIsNotMemberOfAspect(AspectError
):
95 class PostError(DiaspyError
):
96 """Exception raised when something related to posts goes wrong.
101 class StreamError(DiaspyError
):
102 """Exception raised when something related to streams goes wrong.
107 class SettingsError(DiaspyError
):
108 """Exception raised when something related to settings goes wrong.
112 class SearchError(DiaspyError
):
113 """Exception raised when something related to searching goes wrong.
117 class TagError(DiaspyError
):
118 """Exception raised when something related to a tag goes wrong.
122 def react(r
, message
='', accepted
=[200, 201, 202, 203, 204, 205, 206], exception
=DiaspyError
):
123 """This method tries to decide how to react
124 to a response code passed to it. If it's an
125 error code it will raise an exception (it will
126 call `throw()` method.
128 If response code is not accepted AND cannot
129 be matched to any exception, generic exception
130 (DiaspyError) is raised (provided that `exception`
131 param was left untouched).
133 By default `accepted` param contains all HTTP
136 User can force type of exception to raise by passing
139 :param r: response code
141 :param message: message for the exception
143 :param accepted: list of accepted error codes
145 :param exception: preferred exception to raise
146 :type exception: valid exception type (default: DiaspyError)
148 warnings
.warn(DeprecationWarning)
149 if r
in accepted
: e
= None
150 else: e
= DiaspyError
152 if e
is not None: e
= exception
153 throw(e
, message
=message
)
156 def throw(e
, message
=''):
157 """This function throws an error with given message.
158 If None is passed as `e` throw() will not raise
161 :param e: exception to throw
162 :type e: any valid exception type or None
163 :param message: message for exception
166 warnings
.warn(DeprecationWarning)
168 else: raise e(message
)