summaryrefslogtreecommitdiff
path: root/sleekxmpp/stanza
diff options
context:
space:
mode:
Diffstat (limited to 'sleekxmpp/stanza')
-rw-r--r--sleekxmpp/stanza/atom.py25
-rw-r--r--sleekxmpp/stanza/rootstanza.py4
2 files changed, 25 insertions, 4 deletions
diff --git a/sleekxmpp/stanza/atom.py b/sleekxmpp/stanza/atom.py
index 244ef315..4e9591a5 100644
--- a/sleekxmpp/stanza/atom.py
+++ b/sleekxmpp/stanza/atom.py
@@ -6,8 +6,7 @@
See the file LICENSE for copying permission.
"""
-from sleekxmpp.xmlstream import ElementBase
-
+from sleekxmpp.xmlstream import register_stanza_plugin, ElementBase
class AtomEntry(ElementBase):
@@ -22,5 +21,23 @@ class AtomEntry(ElementBase):
namespace = 'http://www.w3.org/2005/Atom'
name = 'entry'
plugin_attrib = 'entry'
- interfaces = set(('title', 'summary'))
- sub_interfaces = set(('title', 'summary'))
+ interfaces = set(('title', 'summary', 'id', 'published', 'updated'))
+ sub_interfaces = set(('title', 'summary', 'id', 'published',
+ 'updated'))
+
+class AtomAuthor(ElementBase):
+
+ """
+ An Atom author.
+
+ Stanza Interface:
+ name -- The printable author name
+ uri -- The bare jid of the author
+ """
+
+ name = 'author'
+ plugin_attrib = 'author'
+ interfaces = set(('name', 'uri'))
+ sub_interfaces = set(('name', 'uri'))
+
+register_stanza_plugin(AtomEntry, AtomAuthor)
diff --git a/sleekxmpp/stanza/rootstanza.py b/sleekxmpp/stanza/rootstanza.py
index a7c2b218..52b807e5 100644
--- a/sleekxmpp/stanza/rootstanza.py
+++ b/sleekxmpp/stanza/rootstanza.py
@@ -60,7 +60,9 @@ class RootStanza(StanzaBase):
self.send()
elif isinstance(e, XMPPError):
# We raised this deliberately
+ keep_id = self['id']
self.reply(clear=e.clear)
+ self['id'] = keep_id
self['error']['condition'] = e.condition
self['error']['text'] = e.text
self['error']['type'] = e.etype
@@ -72,7 +74,9 @@ class RootStanza(StanzaBase):
self.send()
else:
# We probably didn't raise this on purpose, so send an error stanza
+ keep_id = self['id']
self.reply()
+ self['id'] = keep_id
self['error']['condition'] = 'undefined-condition'
self['error']['text'] = "SleekXMPP got into trouble."
self['error']['type'] = 'cancel'