diff options
author | Lance Stout <lancestout@gmail.com> | 2012-03-16 10:51:25 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-03-16 10:51:25 -0700 |
commit | 58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70 (patch) | |
tree | f1346716c923c752d16099bc6e7698b3e9dcddf3 /sleekxmpp/plugins/xep_0184/stanza.py | |
parent | 96ff2d43c057c1aabdb735f3a0150d3a99fb0db6 (diff) | |
download | slixmpp-58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70.tar.gz slixmpp-58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70.tar.bz2 slixmpp-58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70.tar.xz slixmpp-58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70.zip |
Expand support for XEP-0184.
New stanza interfaces:
Adding a message receipt request:
msg['request_receipt'] = True
Adding a message receipt:
msg['receipt'] = '123-24234'
Retrieving the acked message ID:
ack_id = msg['receipt']
print(ack_id)
'123-24234'
New configuration options:
auto_ack:
If True, auto reply to messages that request receipts.
Defaults to True
auto_request:
If True, auto add receipt requests to appropriate outgoing
messages.
Defaults to False
Diffstat (limited to 'sleekxmpp/plugins/xep_0184/stanza.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0184/stanza.py | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/sleekxmpp/plugins/xep_0184/stanza.py b/sleekxmpp/plugins/xep_0184/stanza.py index 42ba8c3f..d1654ef8 100644 --- a/sleekxmpp/plugins/xep_0184/stanza.py +++ b/sleekxmpp/plugins/xep_0184/stanza.py @@ -12,34 +12,58 @@ from sleekxmpp.xmlstream.stanzabase import ElementBase, ET class Request(ElementBase): namespace = 'urn:xmpp:receipts' name = 'request' - plugin_attrib = 'request_reciept' - interfaces = set(('request_reciept',)) + plugin_attrib = 'request_receipt' + interfaces = set(('request_receipt',)) + sub_interfaces = interfaces is_extension = True def setup(self, xml=None): self.xml = ET.Element('') return True - def set_request_reciept(self, val): - self.del_request_reciept() - parent = self.parent() + def set_request_receipt(self, val): + self.del_request_receipt() if val: - self.xml = ET.Element("{%s}%s" % (self.namespace, self.name)) - parent.append(self.xml) + parent = self.parent() + parent._set_sub_text("{%s}request" % self.namespace, keep=True) - def get_request_reciept(self): + def get_request_receipt(self): parent = self.parent() - if parent.find("{%s}%s" % (self.namespace, self.name)) is not None: + if parent.find("{%s}request" % self.namespace) is not None: return True else: return False - def del_request_reciept(self): - self.xml = ET.Element('') + def del_request_receipt(self): + self.parent()._del_sub("{%s}request" % self.namespace) class Received(ElementBase): namespace = 'urn:xmpp:receipts' name = 'received' - plugin_attrib = 'reciept_received' - interfaces = set(('id',)) + plugin_attrib = 'receipt' + interfaces = set(['receipt']) + sub_interfaces = interfaces + is_extension = True + + def setup(self, xml=None): + self.xml = ET.Element('') + return True + + def set_receipt(self, value): + self.del_receipt() + if value: + parent = self.parent() + xml = ET.Element("{%s}received" % self.namespace) + xml.attrib['id'] = value + parent.append(xml) + + def get_receipt(self): + parent = self.parent() + xml = parent.find("{%s}received" % self.namespace) + if xml is not None: + return xml.attrib.get('id', '') + return '' + + def del_receipt(self): + self.parent()._del_sub('{%s}received' % self.namespace) |