From 2217c69757417ea83bb66ccb9aa13376d6324b4e Mon Sep 17 00:00:00 2001 From: Erik Larsson Date: Thu, 2 Feb 2012 14:29:27 +0100 Subject: Added plugin for XEP-0184 --- sleekxmpp/plugins/xep_0184/__init__.py | 10 ++++++++ sleekxmpp/plugins/xep_0184/reciept.py | 43 ++++++++++++++++++++++++++++++++ sleekxmpp/plugins/xep_0184/stanza.py | 45 ++++++++++++++++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 sleekxmpp/plugins/xep_0184/__init__.py create mode 100644 sleekxmpp/plugins/xep_0184/reciept.py create mode 100644 sleekxmpp/plugins/xep_0184/stanza.py (limited to 'sleekxmpp/plugins') diff --git a/sleekxmpp/plugins/xep_0184/__init__.py b/sleekxmpp/plugins/xep_0184/__init__.py new file mode 100644 index 00000000..59312138 --- /dev/null +++ b/sleekxmpp/plugins/xep_0184/__init__.py @@ -0,0 +1,10 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2012 Erik Reuterborg Larsson + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.plugins.xep_0184.reciept import xep_0184 +from sleekxmpp.plugins.xep_0184.stanza import Request, Received diff --git a/sleekxmpp/plugins/xep_0184/reciept.py b/sleekxmpp/plugins/xep_0184/reciept.py new file mode 100644 index 00000000..d5815981 --- /dev/null +++ b/sleekxmpp/plugins/xep_0184/reciept.py @@ -0,0 +1,43 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2012 Erik Reuterborg Larsson + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.stanza import Message +from sleekxmpp.xmlstream import register_stanza_plugin +from sleekxmpp.plugins.base import base_plugin +from stanza import Request, Received + + +class xep_0184(base_plugin): + """ + XEP-0184: Message Delivery Receipts + """ + + def plugin_init(self): + self.xep = '0184' + self.description = 'Message Delivery Receipts' + register_stanza_plugin(Message, Request) + register_stanza_plugin(Message, Received) + + def post_init(self): + base_plugin.post_init(self) + self.xmpp.plugin['xep_0030'].add_feature('urn:xmpp:receipts') + + def ack(self, message): + """ + Acknowledges a message + + Arguments: + message -- The message to acknowledge. + """ + mto = message['to'] + mfrom = message['from'] + mid = message['id'] + msg = self.xmpp.make_message(mto=mfrom, mfrom=mto) + msg['reciept_received']['id'] = mid + msg['id'] = self.xmpp.new_id() + msg.send() diff --git a/sleekxmpp/plugins/xep_0184/stanza.py b/sleekxmpp/plugins/xep_0184/stanza.py new file mode 100644 index 00000000..46cb38d0 --- /dev/null +++ b/sleekxmpp/plugins/xep_0184/stanza.py @@ -0,0 +1,45 @@ +""" + SleekXMPP: The Sleek XMPP Library + Copyright (C) 2012 Erik Reuterborg Larsson + This file is part of SleekXMPP. + + See the file LICENSE for copying permission. +""" + +from sleekxmpp.xmlstream.stanzabase import ElementBase, ET + + +class Request(ElementBase): + namespace = 'urn:xmpp:receipts' + name = 'request' + plugin_attrib = 'request_reciept' + interfaces = set(('request_reciept',)) + 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() + if val: + self.xml = ET.Element("{%s}%s" % (self.namespace, self.name)) + parent.append(self.xml) + + def get_request_reciept(self): + parent = self.parent() + if parent.find("{%s}%s" % (self.namespace, self.name)) is not None: + return True + else: + return False + + def del_request_reciept(self): + self.xml = ET.Element('') + + +class Received(ElementBase): + namespace = 'urn:xmpp:receipts' + name = 'received' + plugin_attrib = 'reciept_received' + interfaces = set(('id',)) -- cgit v1.2.3