Source code for slixmpp.plugins.xep_0297.forwarded
# Slixmpp: The Slick XMPP Library# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout# This file is part of Slixmpp.# See the file LICENSE for copying permission.importloggingfromslixmppimportIq,Message,Presencefromslixmpp.pluginsimportBasePluginfromslixmpp.xmlstreamimportregister_stanza_pluginfromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportStanzaPathfromslixmpp.plugins.xep_0297importstanza,Forwarded
[docs]classXEP_0297(BasePlugin):name='xep_0297'description='XEP-0297: Stanza Forwarding'dependencies={'xep_0030','xep_0203'}stanza=stanzadefplugin_init(self):register_stanza_plugin(Message,Forwarded)# While these are marked as iterable, that is just for# making it easier to extract the forwarded stanza. There# still can be only a single forwarded stanza.register_stanza_plugin(Forwarded,Message,iterable=True)register_stanza_plugin(Forwarded,Presence,iterable=True)register_stanza_plugin(Forwarded,Iq,iterable=True)register_stanza_plugin(Forwarded,self.xmpp['xep_0203'].stanza.Delay)self.xmpp.register_handler(Callback('Forwarded Stanza',StanzaPath('message/forwarded'),self._handle_forwarded))defsession_bind(self,jid):self.xmpp['xep_0030'].add_feature('urn:xmpp:forward:0')defplugin_end(self):self.xmpp['xep_0030'].del_feature(feature='urn:xmpp:forward:0')self.xmpp.remove_handler('Forwarded Stanza')defforward(self,stanza=None,mto=None,mbody=None,mfrom=None,delay=None):stanza.stream=Nonemsg=self.xmpp.Message()msg['to']=mtomsg['from']=mfrommsg['body']=mbodymsg['forwarded']['stanza']=stanzaifdelayisnotNone:msg['forwarded']['delay']['stamp']=delaymsg.send()def_handle_forwarded(self,msg):self.xmpp.event('forwarded_stanza',msg)