xep-0425: update to version 0.3.0

This commit is contained in:
nicoco 2024-03-17 12:44:13 +01:00 committed by mathieui
parent dd903b1792
commit a18a6c4eb8
5 changed files with 35 additions and 33 deletions

View File

@ -864,7 +864,7 @@
<xmpp:SupportedXep> <xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/> <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/>
<xmpp:status>complete</xmpp:status> <xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.1</xmpp:version> <xmpp:version>0.3.0</xmpp:version>
<xmpp:since>1.6.0</xmpp:since> <xmpp:since>1.6.0</xmpp:since>
</xmpp:SupportedXep> </xmpp:SupportedXep>
</implements> </implements>

View File

@ -112,7 +112,7 @@ PLUGINS = [
'xep_0421', # Anonymous unique occupant identifiers for MUCs 'xep_0421', # Anonymous unique occupant identifiers for MUCs
'xep_0422', # Message Fastening 'xep_0422', # Message Fastening
'xep_0424', # Message Retraction 'xep_0424', # Message Retraction
'xep_0425', # Message Moderation 'xep_0425', # Moderated Message Retraction
'xep_0428', # Message Fallback 'xep_0428', # Message Fallback
'xep_0437', # Room Activity Indicators 'xep_0437', # Room Activity Indicators
'xep_0439', # Quick Response 'xep_0439', # Quick Response

View File

@ -13,10 +13,10 @@ from slixmpp.plugins.xep_0425 import stanza
class XEP_0425(BasePlugin): class XEP_0425(BasePlugin):
'''XEP-0425: Message Moderation''' '''XEP-0425: Moderated Message Retraction'''
name = 'xep_0425' name = 'xep_0425'
description = 'XEP-0425: Message Moderation' description = 'XEP-0425: Moderated Message Retraction'
dependencies = {'xep_0424', 'xep_0421'} dependencies = {'xep_0424', 'xep_0421'}
stanza = stanza stanza = stanza
namespace = stanza.NS namespace = stanza.NS
@ -25,7 +25,7 @@ class XEP_0425(BasePlugin):
stanza.register_plugins() stanza.register_plugins()
self.xmpp.register_handler(Callback( self.xmpp.register_handler(Callback(
'Moderated Message', 'Moderated Message',
StanzaPath('message/apply_to/moderated/retract'), StanzaPath('message/retract/moderated'),
self._handle_moderated, self._handle_moderated,
)) ))
@ -42,7 +42,7 @@ class XEP_0425(BasePlugin):
async def moderate(self, room: JID, id: str, reason: str = '', *, async def moderate(self, room: JID, id: str, reason: str = '', *,
ifrom: Optional[JID] = None, **iqkwargs): ifrom: Optional[JID] = None, **iqkwargs):
iq = self.xmpp.make_iq_set(ito=room.bare, ifrom=ifrom) iq = self.xmpp.make_iq_set(ito=room.bare, ifrom=ifrom)
iq['apply_to']['id'] = id iq['moderate']['id'] = id
iq['apply_to']['moderate']['reason'] = reason iq['moderate']['reason'] = reason
iq['apply_to']['moderate'].enable('retract') iq['moderate'].enable('retract')
await iq.send(**iqkwargs) await iq.send(**iqkwargs)

View File

@ -8,12 +8,11 @@ from slixmpp.xmlstream import (
ElementBase, ElementBase,
register_stanza_plugin, register_stanza_plugin,
) )
from slixmpp.plugins.xep_0422.stanza import ApplyTo
from slixmpp.plugins.xep_0421.stanza import OccupantId from slixmpp.plugins.xep_0421.stanza import OccupantId
from slixmpp.plugins.xep_0424.stanza import Retract, Retracted from slixmpp.plugins.xep_0424.stanza import Retract, Retracted
NS = 'urn:xmpp:message-moderate:0' NS = 'urn:xmpp:message-moderate:1'
class Moderate(ElementBase): class Moderate(ElementBase):
@ -28,17 +27,17 @@ class Moderated(ElementBase):
namespace = NS namespace = NS
name = 'moderated' name = 'moderated'
plugin_attrib = 'moderated' plugin_attrib = 'moderated'
interfaces = {'reason', 'by'} interfaces = {'by'}
sub_interfaces = {'reason'}
def register_plugins(): def register_plugins():
register_stanza_plugin(Iq, ApplyTo) # for moderation requests
register_stanza_plugin(ApplyTo, Moderate) register_stanza_plugin(Iq, Moderate)
register_stanza_plugin(Moderate, Retract) register_stanza_plugin(Moderate, Retract)
register_stanza_plugin(Message, Moderated) # for moderation events
register_stanza_plugin(ApplyTo, Moderated) register_stanza_plugin(Retract, Moderated)
register_stanza_plugin(Moderated, Retract)
register_stanza_plugin(Moderated, Retracted)
register_stanza_plugin(Moderated, OccupantId) register_stanza_plugin(Moderated, OccupantId)
# for tombstones
register_stanza_plugin(Retracted, Moderated)

View File

@ -1,45 +1,48 @@
import unittest import unittest
from slixmpp import Message, Iq, JID from slixmpp import Message, Iq, JID
from slixmpp.test import SlixTest from slixmpp.test import SlixTest
from slixmpp.plugins.xep_0424 import stanza as stanza424
from slixmpp.plugins.xep_0425 import stanza from slixmpp.plugins.xep_0425 import stanza
class TestModeration(SlixTest): class TestModeration(SlixTest):
def setUp(self): def setUp(self):
stanza424.register_plugins()
stanza.register_plugins() stanza.register_plugins()
def testModerate(self): def testModerate(self):
iq = Iq() iq = Iq()
iq['type'] = 'set' iq['type'] = 'set'
iq['id'] = 'a' iq['id'] = 'a'
iq['apply_to']['id'] = 'some-id' iq['moderate']['id'] = 'some-id'
iq['apply_to']['moderate'].enable('retract') iq['moderate'].enable('retract')
iq['apply_to']['moderate']['reason'] = 'R' iq['moderate']['reason'] = 'R'
self.check(iq, """ self.check(iq, """
<iq type='set' id='a'> <iq type='set' id='a'>
<apply-to id="some-id" xmlns="urn:xmpp:fasten:0"> <moderate xmlns='urn:xmpp:message-moderate:1'>
<moderate xmlns='urn:xmpp:message-moderate:0'> <retract xmlns='urn:xmpp:message-retract:1'/>
<retract xmlns='urn:xmpp:message-retract:0'/>
<reason>R</reason> <reason>R</reason>
</moderate> </moderate>
</apply-to>
</iq> </iq>
""", use_values=False) """, use_values=False)
def testModerated(self): def testModerated(self):
message = Message() message = Message()
message['moderated']['by'] = JID('toto@titi') message['retract']['id'] = 'some-id'
message['moderated']['retracted']['stamp'] = '2019-09-20T23:09:32Z' message['retract']['moderated']['by'] = JID('toto@titi')
message['moderated']['reason'] = 'R' message['retract']['moderated']['occupant-id']['id'] = 'oc-id'
message['retract']['reason'] = 'R'
self.check(message, """ self.check(message, """
<message> <message>
<moderated xmlns="urn:xmpp:message-moderate:0" by="toto@titi"> <retract id='some-id' xmlns='urn:xmpp:message-retract:1'>
<retracted stamp="2019-09-20T23:09:32Z" xmlns="urn:xmpp:message-retract:0" /> <moderated by='toto@titi' xmlns='urn:xmpp:message-moderate:1'>
<reason>R</reason> <occupant-id xmlns="urn:xmpp:occupant-id:0" id="oc-id" />
</moderated> </moderated>
<reason>R</reason>
</retract>
</message> </message>
""") """)