summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2021-01-27 00:07:36 +0100
committermathieui <mathieui@mathieui.net>2021-01-27 00:07:36 +0100
commit70b508101896e8076228059fdd4726c2c39fa831 (patch)
tree57d10fe4fc2a8f963cc21498c2f92e8962453b94
parent4cb679ae2acd3c106cff010eb5278765c688f8f6 (diff)
parent04dcc8628d9210e4e96ea3daf5c8580ea85c671e (diff)
downloadslixmpp-70b508101896e8076228059fdd4726c2c39fa831.tar.gz
slixmpp-70b508101896e8076228059fdd4726c2c39fa831.tar.bz2
slixmpp-70b508101896e8076228059fdd4726c2c39fa831.tar.xz
slixmpp-70b508101896e8076228059fdd4726c2c39fa831.zip
Merge branch 'xep-0382-spoiler-messages' into 'master'
XEP-0382: Spoiler Messages See merge request poezio/slixmpp!100
-rw-r--r--doap.xml8
-rw-r--r--slixmpp/plugins/__init__.py1
-rw-r--r--slixmpp/plugins/xep_0382/__init__.py13
-rw-r--r--slixmpp/plugins/xep_0382/spoiler.py32
-rw-r--r--slixmpp/plugins/xep_0382/stanza.py26
5 files changed, 80 insertions, 0 deletions
diff --git a/doap.xml b/doap.xml
index b792e514..be68b1d0 100644
--- a/doap.xml
+++ b/doap.xml
@@ -793,6 +793,14 @@
</implements>
<implements>
<xmpp:SupportedXep>
+ <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0382.html"/>
+ <xmpp:status>complete</xmpp:status>
+ <xmpp:version>0.2.0</xmpp:version>
+ <xmpp:since>1.7.0</xmpp:since>
+ </xmpp:SupportedXep>
+ </implements>
+ <implements>
+ <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0394.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.1</xmpp:version>
diff --git a/slixmpp/plugins/__init__.py b/slixmpp/plugins/__init__.py
index a0159ad1..e833d808 100644
--- a/slixmpp/plugins/__init__.py
+++ b/slixmpp/plugins/__init__.py
@@ -100,6 +100,7 @@ __all__ = [
'xep_0369', # MIX-CORE
'xep_0377', # Spam reporting
'xep_0380', # Explicit Message Encryption
+ 'xep_0382', # Spoiler Messages
'xep_0394', # Message Markup
'xep_0403', # MIX-Presence
'xep_0404', # MIX-Anon
diff --git a/slixmpp/plugins/xep_0382/__init__.py b/slixmpp/plugins/xep_0382/__init__.py
new file mode 100644
index 00000000..4a6b83fc
--- /dev/null
+++ b/slixmpp/plugins/xep_0382/__init__.py
@@ -0,0 +1,13 @@
+"""
+ Slixmpp: The Slick XMPP Library
+ Copyright (C) 2021 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_0382.stanza import *
+from slixmpp.plugins.xep_0382.spoiler import XEP_0382
+
+register_plugin(XEP_0382)
diff --git a/slixmpp/plugins/xep_0382/spoiler.py b/slixmpp/plugins/xep_0382/spoiler.py
new file mode 100644
index 00000000..2f556f77
--- /dev/null
+++ b/slixmpp/plugins/xep_0382/spoiler.py
@@ -0,0 +1,32 @@
+"""
+ Slixmpp: The Slick XMPP Library
+ Copyright (C) 2021 Mathieu Pasquet <mathieui@mathieui.net>
+ This file is part of Slixmpp.
+
+ See the file LICENSE for copying permission.
+"""
+from slixmpp import JID
+from slixmpp.plugins import BasePlugin
+from slixmpp.plugins.xep_0382 import stanza
+from slixmpp.stanza import Message
+
+
+class XEP_0382(BasePlugin):
+ '''XEP-0382: Spoiler Messages'''
+
+ name = 'xep_0382'
+ description = 'Spoiler Messages'
+ dependencies = {'xep_0030'}
+ stanza = stanza
+ namespace = stanza.NS
+
+ def plugin_init(self) -> None:
+ stanza.register_plugins()
+ Message.sub_interfaces.add('spoiler')
+
+ def session_bind(self, jid: JID):
+ self.xmpp['xep_0030'].add_feature(stanza.NS)
+
+ def plugin_end(self):
+ self.xmpp.plugin['xep_0030'].del_feature(feature=stanza.NS)
+ Message.sub_interfaces.remove('spoiler')
diff --git a/slixmpp/plugins/xep_0382/stanza.py b/slixmpp/plugins/xep_0382/stanza.py
new file mode 100644
index 00000000..0ce2b5f4
--- /dev/null
+++ b/slixmpp/plugins/xep_0382/stanza.py
@@ -0,0 +1,26 @@
+"""
+ Slixmpp: The Slick XMPP Library
+ Copyright (C) 2021 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 (
+ register_stanza_plugin,
+ ElementBase,
+)
+
+
+NS = 'urn:xmpp:spoiler:0'
+
+
+class Spoiler(ElementBase):
+ namespace = NS
+ name = 'spoiler'
+ plugin_attrib = 'spoiler'
+
+
+def register_plugins():
+ register_stanza_plugin(Message, Spoiler)