Package pyxmpp :: Module exceptions
[hide private]

Source Code for Module pyxmpp.exceptions

  1  # 
  2  # (C) Copyright 2003-2010 Jacek Konieczny <jajcus@jajcus.net> 
  3  # 
  4  # This program is free software; you can redistribute it and/or modify 
  5  # it under the terms of the GNU Lesser General Public License Version 
  6  # 2.1 as published by the Free Software Foundation. 
  7  # 
  8  # This program is distributed in the hope that it will be useful, 
  9  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
 10  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 11  # GNU Lesser General Public License for more details. 
 12  # 
 13  # You should have received a copy of the GNU Lesser General Public 
 14  # License along with this program; if not, write to the Free Software 
 15  # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 
 16  # 
 17   
 18  """PyXMPP exceptions. 
 19   
 20  This module defines all exceptions raised by PyXMPP. 
 21  """ 
 22   
 23  __revision__="$Id: error.py 647 2006-08-26 18:27:39Z jajcus $" 
 24  __docformat__="restructuredtext en" 
 25   
 26  import logging 
27 28 29 -class Error(StandardError):
30 """Base class for all PyXMPP exceptions.""" 31 pass
32
33 -class JIDError(Error, ValueError):
34 "Exception raised when invalid JID is used" 35 pass
36
37 -class StreamError(Error):
38 """Base class for all stream errors.""" 39 pass
40
41 -class StreamEncryptionRequired(StreamError):
42 """Exception raised when stream encryption is requested, but not used.""" 43 pass
44
45 -class HostMismatch(StreamError):
46 """Exception raised when the connected host name is other then requested.""" 47 pass
48
49 -class FatalStreamError(StreamError):
50 """Base class for all fatal Stream exceptions. 51 52 When `FatalStreamError` is raised the stream is no longer usable.""" 53 pass
54
55 -class StreamParseError(FatalStreamError):
56 """Raised when invalid XML is received in an XMPP stream.""" 57 pass
58
59 -class StreamAuthenticationError(FatalStreamError):
60 """Raised when stream authentication fails.""" 61 pass
62
63 -class TLSNegotiationFailed(FatalStreamError):
64 """Raised when stream TLS negotiation fails.""" 65 pass
66
67 -class TLSError(FatalStreamError):
68 """Raised on TLS error during stream processing.""" 69 pass
70
71 -class TLSNegotiatedButNotAvailableError(TLSError):
72 """Raised on TLS error during stream processing.""" 73 pass
74
75 -class SASLNotAvailable(StreamAuthenticationError):
76 """Raised when SASL authentication is requested, but not available.""" 77 pass
78
79 -class SASLMechanismNotAvailable(StreamAuthenticationError):
80 """Raised when none of SASL authentication mechanisms requested is 81 available.""" 82 pass
83
84 -class SASLAuthenticationFailed(StreamAuthenticationError):
85 """Raised when stream SASL authentication fails.""" 86 pass
87
88 -class StringprepError(Error):
89 """Exception raised when string preparation results in error.""" 90 pass
91
92 -class ClientError(Error):
93 """Raised on a client error.""" 94 pass
95
96 -class FatalClientError(ClientError):
97 """Raised on a fatal client error.""" 98 pass
99
100 -class ClientStreamError(StreamError):
101 """Raised on a client stream error.""" 102 pass
103
104 -class FatalClientStreamError(FatalStreamError):
105 """Raised on a fatal client stream error.""" 106 pass
107
108 -class LegacyAuthenticationError(ClientStreamError):
109 """Raised on a legacy authentication error.""" 110 pass
111
112 -class RegistrationError(ClientStreamError):
113 """Raised on a in-band registration error.""" 114 pass
115
116 -class ComponentStreamError(StreamError):
117 """Raised on a component error.""" 118 pass
119
120 -class FatalComponentStreamError(ComponentStreamError,FatalStreamError):
121 """Raised on a fatal component error.""" 122 pass
123
124 ######################## 125 # Protocol Errors 126 127 -class ProtocolError(Error):
128 """Raised when there is something wrong with a stanza processed. 129 130 When not processed earlier by an application, the exception will be catched 131 by the stanza dispatcher to return XMPP error to the stanza sender, when 132 allowed. 133 134 ProtocolErrors handled internally by PyXMPP will be logged via the logging 135 interface. Errors reported to the sender will be logged using 136 "pyxmpp.ProtocolError.reported" channel and the ignored errors using 137 "pyxmpp.ProtocolError.ignored" channel. Both with the "debug" level. 138 139 :Ivariables: 140 - `xmpp_name` -- XMPP error name which should be reported. 141 - `message` -- the error message.""" 142 143 logger_reported = logging.getLogger("pyxmpp.ProtocolError.reported") 144 logger_ignored = logging.getLogger("pyxmpp.ProtocolError.ignored") 145
146 - def __init__(self, xmpp_name, message):
147 self.args = (xmpp_name, message)
148 @property
149 - def xmpp_name(self):
150 return self.args[0]
151 @property
152 - def message(self):
153 return self.args[1]
154 - def log_reported(self):
155 self.logger_reported.debug(u"Protocol error detected: %s", self.message)
156 - def log_ignored(self):
157 self.logger_ignored.debug(u"Protocol error detected: %s", self.message)
158 - def __unicode__(self):
159 return str(self.args[1])
160 - def __repr__(self):
161 return "<ProtocolError %r %r>" % (self.xmpp_name, self.message)
162
163 -class BadRequestProtocolError(ProtocolError):
164 """Raised when invalid stanza is processed and 'bad-request' error should be reported."""
165 - def __init__(self, message):
166 ProtocolError.__init__(self, "bad-request", message)
167
168 -class JIDMalformedProtocolError(ProtocolError, JIDError):
169 """Raised when invalid JID is encountered."""
170 - def __init__(self, message):
171 ProtocolError.__init__(self, "jid-malformed", message)
172
173 -class FeatureNotImplementedProtocolError(ProtocolError):
174 """Raised when stanza requests a feature which is not (yet) implemented."""
175 - def __init__(self, message):
176 ProtocolError.__init__(self, "feature-not-implemented", message)
177 178 # vi: sts=4 et sw=4 179