summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0184/stanza.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-03-16 10:51:25 -0700
committerLance Stout <lancestout@gmail.com>2012-03-16 10:51:25 -0700
commit58e0f1e6c3a8dd6eea19e05aa9367a3dd2ceca70 (patch)
treef1346716c923c752d16099bc6e7698b3e9dcddf3 /sleekxmpp/plugins/xep_0184/stanza.py
parent96ff2d43c057c1aabdb735f3a0150d3a99fb0db6 (diff)
downloadslixmpp-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.py50
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)