2010-03-26 21:32:16 +00:00
|
|
|
"""
|
|
|
|
SleekXMPP: The Sleek XMPP Library
|
|
|
|
Copyright (C) 2010 Nathanael C. Fritz
|
|
|
|
This file is part of SleekXMPP.
|
|
|
|
|
2010-08-11 22:21:12 +00:00
|
|
|
See the file LICENSE for copying permission.
|
2010-03-26 21:32:16 +00:00
|
|
|
"""
|
|
|
|
|
2010-10-06 19:12:39 +00:00
|
|
|
|
2010-01-05 21:56:48 +00:00
|
|
|
class XMPPError(Exception):
|
2010-08-11 22:21:12 +00:00
|
|
|
|
|
|
|
"""
|
|
|
|
A generic exception that may be raised while processing an XMPP stanza
|
|
|
|
to indicate that an error response stanza should be sent.
|
|
|
|
|
|
|
|
The exception method for stanza objects extending RootStanza will create
|
|
|
|
an error stanza and initialize any additional substanzas using the
|
|
|
|
extension information included in the exception.
|
|
|
|
|
|
|
|
Meant for use in SleekXMPP plugins and applications using SleekXMPP.
|
|
|
|
"""
|
|
|
|
|
2011-08-19 07:08:47 +00:00
|
|
|
def __init__(self, condition='undefined-condition', text=None,
|
|
|
|
etype='cancel', extension=None, extension_ns=None,
|
|
|
|
extension_args=None, clear=True):
|
2010-08-11 22:21:12 +00:00
|
|
|
"""
|
|
|
|
Create a new XMPPError exception.
|
|
|
|
|
|
|
|
Extension information can be included to add additional XML elements
|
|
|
|
to the generated error stanza.
|
|
|
|
|
|
|
|
Arguments:
|
|
|
|
condition -- The XMPP defined error condition.
|
2011-08-19 07:08:47 +00:00
|
|
|
Defaults to 'undefined-condition'.
|
2010-08-11 22:21:12 +00:00
|
|
|
text -- Human readable text describing the error.
|
|
|
|
etype -- The XMPP error type, such as cancel or modify.
|
2011-08-19 07:08:47 +00:00
|
|
|
Defaults to 'cancel'.
|
2010-08-11 22:21:12 +00:00
|
|
|
extension -- Tag name of the extension's XML content.
|
|
|
|
extension_ns -- XML namespace of the extensions' XML content.
|
|
|
|
extension_args -- Content and attributes for the extension
|
|
|
|
element. Same as the additional arguments to
|
|
|
|
the ET.Element constructor.
|
2011-02-11 20:20:26 +00:00
|
|
|
clear -- Indicates if the stanza's contents should be
|
|
|
|
removed before replying with an error.
|
|
|
|
Defaults to True.
|
2010-08-11 22:21:12 +00:00
|
|
|
"""
|
2010-10-25 19:09:56 +00:00
|
|
|
if extension_args is None:
|
|
|
|
extension_args = {}
|
|
|
|
|
2010-08-11 22:21:12 +00:00
|
|
|
self.condition = condition
|
|
|
|
self.text = text
|
|
|
|
self.etype = etype
|
2011-02-11 20:20:26 +00:00
|
|
|
self.clear = clear
|
2010-08-11 22:21:12 +00:00
|
|
|
self.extension = extension
|
|
|
|
self.extension_ns = extension_ns
|
|
|
|
self.extension_args = extension_args
|
2011-05-31 19:48:43 +00:00
|
|
|
|
|
|
|
|
2011-08-19 07:08:47 +00:00
|
|
|
class IqTimeout(XMPPError):
|
2011-05-31 19:48:43 +00:00
|
|
|
|
|
|
|
"""
|
|
|
|
An exception which indicates that an IQ request response has not been
|
|
|
|
received within the alloted time window.
|
|
|
|
"""
|
|
|
|
|
2011-06-01 22:28:33 +00:00
|
|
|
def __init__(self, iq):
|
2011-08-19 07:08:47 +00:00
|
|
|
super(IqTimeout, self).__init__(
|
|
|
|
condition='remote-server-timeout',
|
|
|
|
etype='cancel')
|
2011-06-01 22:28:33 +00:00
|
|
|
|
2011-08-19 07:08:47 +00:00
|
|
|
self.iq = iq
|
2011-08-18 09:46:48 +00:00
|
|
|
|
2011-08-19 07:08:47 +00:00
|
|
|
class IqError(XMPPError):
|
2011-05-31 19:48:43 +00:00
|
|
|
|
2011-06-01 22:28:33 +00:00
|
|
|
"""
|
|
|
|
An exception raised when an Iq stanza of type 'error' is received
|
|
|
|
after making a blocking send call.
|
|
|
|
"""
|
|
|
|
|
2011-05-31 19:48:43 +00:00
|
|
|
def __init__(self, iq):
|
2011-08-19 07:08:47 +00:00
|
|
|
super(IqError, self).__init__(
|
|
|
|
condition=iq['error']['condition'],
|
|
|
|
text=iq['error']['text'],
|
|
|
|
etype=iq['error']['type'])
|
|
|
|
|
2011-05-31 19:48:43 +00:00
|
|
|
self.iq = iq
|