XEP-0422: Message Fastening

This commit is contained in:
mathieui 2020-12-02 19:36:20 +01:00
parent e592a46c99
commit 58c3579f74
4 changed files with 84 additions and 0 deletions

View file

@ -93,5 +93,6 @@ __all__ = [
'xep_0404', # MIX-Anon
'xep_0405', # MIX-PAM
'xep_0421', # Anonymous unique occupant identifiers for MUCs
'xep_0422', # Message Fastening
'xep_0444', # Message Reactions
]

View file

@ -0,0 +1,13 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2020 Mathieu Pasquet <mathieui@mathieui.net>
This file is part of Slixmpp.
See the file LICENSE for copying permission.
"""
from slixmpp.plugins.base import register_plugin
from slixmpp.plugins.xep_0422.stanza import *
from slixmpp.plugins.xep_0422.fastening import XEP_0422
register_plugin(XEP_0422)

View file

@ -0,0 +1,28 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2020 Mathieu Pasquet <mathieui@mathieui.net>
This file is part of Slixmpp.
See the file LICENSE for copying permission.
"""
from slixmpp.plugins import BasePlugin
from slixmpp.plugins.xep_0422 import stanza
class XEP_0422(BasePlugin):
'''XEP-0422: Message Fastening'''
name = 'xep_0422'
description = 'Message Fastening'
dependencies = {'xep_0030'}
stanza = stanza
namespace = stanza.NS
def plugin_init(self) -> None:
stanza.register_plugins()
def session_bind(self, jid):
self.xmpp.plugin['xep_0030'].add_feature(feature=stanza.NS)
def plugin_end(self):
self.xmpp.plugin['xep_0030'].del_feature(feature=stanza.NS)

View file

@ -0,0 +1,42 @@
"""
Slixmpp: The Slick XMPP Library
Copyright (C) 2020 Mathieu Pasquet <mathieui@mathieui.net>
This file is part of Slixmpp.
See the file LICENSE for copying permissio
"""
from slixmpp.stanza import Message
from slixmpp.xmlstream import (
ElementBase,
register_stanza_plugin,
)
NS = 'urn:xmpp:fasten:0'
class ApplyTo(ElementBase):
namespace = NS
name = 'apply-to'
plugin_attrib = 'apply_to'
interfaces = {'id', 'shell'}
def set_shell(self, value: bool):
if value:
self.xml.attrib['shell'] = str(value).lower()
else:
if 'shell' in self.xml.attrib:
del self.xml.attrib['shell']
class External(ElementBase):
namespace = NS
name = 'external'
plugin_attrib = 'external'
interfaces = {'name'}
def register_plugins():
register_stanza_plugin(Message, ApplyTo)
register_stanza_plugin(ApplyTo, External)