# 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 permissioimportloggingfromasyncioimportFuturefromtypingimportOptionalfromslixmppimportJIDfromslixmpp.stanzaimportMessage,Iqfromslixmpp.xmlstream.handlerimportCallbackfromslixmpp.xmlstream.matcherimportStanzaPathfromslixmpp.xmlstreamimportregister_stanza_pluginfromslixmpp.pluginsimportBasePluginfromslixmpp.plugins.xep_0280importstanzalog=logging.getLogger(__name__)
[docs]classXEP_0280(BasePlugin):""" XEP-0280 Message Carbons Events triggered by this plugin: - :term:`carbon_received` - :term:`carbon_sent` """name='xep_0280'description='XEP-0280: Message Carbons'dependencies={'xep_0030','xep_0297'}stanza=stanzadefplugin_init(self):self.xmpp.register_handler(Callback('Carbon Received',StanzaPath('message/carbon_received'),self._handle_carbon_received))self.xmpp.register_handler(Callback('Carbon Sent',StanzaPath('message/carbon_sent'),self._handle_carbon_sent))register_stanza_plugin(Message,stanza.ReceivedCarbon)register_stanza_plugin(Message,stanza.SentCarbon)register_stanza_plugin(Message,stanza.PrivateCarbon)register_stanza_plugin(Iq,stanza.CarbonEnable)register_stanza_plugin(Iq,stanza.CarbonDisable)register_stanza_plugin(stanza.ReceivedCarbon,self.xmpp['xep_0297'].stanza.Forwarded)register_stanza_plugin(stanza.SentCarbon,self.xmpp['xep_0297'].stanza.Forwarded)defplugin_end(self):self.xmpp.remove_handler('Carbon Received')self.xmpp.remove_handler('Carbon Sent')self.xmpp.plugin['xep_0030'].del_feature(feature='urn:xmpp:carbons:2')defsession_bind(self,jid):self.xmpp.plugin['xep_0030'].add_feature('urn:xmpp:carbons:2')def_handle_carbon_received(self,msg:Message):ifmsg['from'].bare==self.xmpp.boundjid.bare:self.xmpp.event('carbon_received',msg)def_handle_carbon_sent(self,msg:Message):ifmsg['from'].bare==self.xmpp.boundjid.bare:self.xmpp.event('carbon_sent',msg)