xep-0425: update to version 0.3.0
This commit is contained in:
parent
dd903b1792
commit
a18a6c4eb8
2
doap.xml
2
doap.xml
@ -864,7 +864,7 @@
|
||||
<xmpp:SupportedXep>
|
||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0425.html"/>
|
||||
<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:SupportedXep>
|
||||
</implements>
|
||||
|
@ -112,7 +112,7 @@ PLUGINS = [
|
||||
'xep_0421', # Anonymous unique occupant identifiers for MUCs
|
||||
'xep_0422', # Message Fastening
|
||||
'xep_0424', # Message Retraction
|
||||
'xep_0425', # Message Moderation
|
||||
'xep_0425', # Moderated Message Retraction
|
||||
'xep_0428', # Message Fallback
|
||||
'xep_0437', # Room Activity Indicators
|
||||
'xep_0439', # Quick Response
|
||||
|
@ -13,10 +13,10 @@ from slixmpp.plugins.xep_0425 import stanza
|
||||
|
||||
|
||||
class XEP_0425(BasePlugin):
|
||||
'''XEP-0425: Message Moderation'''
|
||||
'''XEP-0425: Moderated Message Retraction'''
|
||||
|
||||
name = 'xep_0425'
|
||||
description = 'XEP-0425: Message Moderation'
|
||||
description = 'XEP-0425: Moderated Message Retraction'
|
||||
dependencies = {'xep_0424', 'xep_0421'}
|
||||
stanza = stanza
|
||||
namespace = stanza.NS
|
||||
@ -25,7 +25,7 @@ class XEP_0425(BasePlugin):
|
||||
stanza.register_plugins()
|
||||
self.xmpp.register_handler(Callback(
|
||||
'Moderated Message',
|
||||
StanzaPath('message/apply_to/moderated/retract'),
|
||||
StanzaPath('message/retract/moderated'),
|
||||
self._handle_moderated,
|
||||
))
|
||||
|
||||
@ -42,7 +42,7 @@ class XEP_0425(BasePlugin):
|
||||
async def moderate(self, room: JID, id: str, reason: str = '', *,
|
||||
ifrom: Optional[JID] = None, **iqkwargs):
|
||||
iq = self.xmpp.make_iq_set(ito=room.bare, ifrom=ifrom)
|
||||
iq['apply_to']['id'] = id
|
||||
iq['apply_to']['moderate']['reason'] = reason
|
||||
iq['apply_to']['moderate'].enable('retract')
|
||||
iq['moderate']['id'] = id
|
||||
iq['moderate']['reason'] = reason
|
||||
iq['moderate'].enable('retract')
|
||||
await iq.send(**iqkwargs)
|
||||
|
@ -8,12 +8,11 @@ from slixmpp.xmlstream import (
|
||||
ElementBase,
|
||||
register_stanza_plugin,
|
||||
)
|
||||
from slixmpp.plugins.xep_0422.stanza import ApplyTo
|
||||
from slixmpp.plugins.xep_0421.stanza import OccupantId
|
||||
from slixmpp.plugins.xep_0424.stanza import Retract, Retracted
|
||||
|
||||
|
||||
NS = 'urn:xmpp:message-moderate:0'
|
||||
NS = 'urn:xmpp:message-moderate:1'
|
||||
|
||||
|
||||
class Moderate(ElementBase):
|
||||
@ -28,17 +27,17 @@ class Moderated(ElementBase):
|
||||
namespace = NS
|
||||
name = 'moderated'
|
||||
plugin_attrib = 'moderated'
|
||||
interfaces = {'reason', 'by'}
|
||||
sub_interfaces = {'reason'}
|
||||
interfaces = {'by'}
|
||||
|
||||
|
||||
def register_plugins():
|
||||
register_stanza_plugin(Iq, ApplyTo)
|
||||
register_stanza_plugin(ApplyTo, Moderate)
|
||||
# for moderation requests
|
||||
register_stanza_plugin(Iq, Moderate)
|
||||
register_stanza_plugin(Moderate, Retract)
|
||||
|
||||
register_stanza_plugin(Message, Moderated)
|
||||
register_stanza_plugin(ApplyTo, Moderated)
|
||||
register_stanza_plugin(Moderated, Retract)
|
||||
register_stanza_plugin(Moderated, Retracted)
|
||||
# for moderation events
|
||||
register_stanza_plugin(Retract, Moderated)
|
||||
register_stanza_plugin(Moderated, OccupantId)
|
||||
|
||||
# for tombstones
|
||||
register_stanza_plugin(Retracted, Moderated)
|
||||
|
@ -1,45 +1,48 @@
|
||||
import unittest
|
||||
from slixmpp import Message, Iq, JID
|
||||
from slixmpp.test import SlixTest
|
||||
from slixmpp.plugins.xep_0424 import stanza as stanza424
|
||||
from slixmpp.plugins.xep_0425 import stanza
|
||||
|
||||
|
||||
class TestModeration(SlixTest):
|
||||
|
||||
def setUp(self):
|
||||
stanza424.register_plugins()
|
||||
stanza.register_plugins()
|
||||
|
||||
def testModerate(self):
|
||||
iq = Iq()
|
||||
iq['type'] = 'set'
|
||||
iq['id'] = 'a'
|
||||
iq['apply_to']['id'] = 'some-id'
|
||||
iq['apply_to']['moderate'].enable('retract')
|
||||
iq['apply_to']['moderate']['reason'] = 'R'
|
||||
iq['moderate']['id'] = 'some-id'
|
||||
iq['moderate'].enable('retract')
|
||||
iq['moderate']['reason'] = 'R'
|
||||
|
||||
self.check(iq, """
|
||||
<iq type='set' id='a'>
|
||||
<apply-to id="some-id" xmlns="urn:xmpp:fasten:0">
|
||||
<moderate xmlns='urn:xmpp:message-moderate:0'>
|
||||
<retract xmlns='urn:xmpp:message-retract:0'/>
|
||||
<reason>R</reason>
|
||||
</moderate>
|
||||
</apply-to>
|
||||
<moderate xmlns='urn:xmpp:message-moderate:1'>
|
||||
<retract xmlns='urn:xmpp:message-retract:1'/>
|
||||
<reason>R</reason>
|
||||
</moderate>
|
||||
</iq>
|
||||
""", use_values=False)
|
||||
|
||||
def testModerated(self):
|
||||
message = Message()
|
||||
message['moderated']['by'] = JID('toto@titi')
|
||||
message['moderated']['retracted']['stamp'] = '2019-09-20T23:09:32Z'
|
||||
message['moderated']['reason'] = 'R'
|
||||
message['retract']['id'] = 'some-id'
|
||||
message['retract']['moderated']['by'] = JID('toto@titi')
|
||||
message['retract']['moderated']['occupant-id']['id'] = 'oc-id'
|
||||
message['retract']['reason'] = 'R'
|
||||
|
||||
self.check(message, """
|
||||
<message>
|
||||
<moderated xmlns="urn:xmpp:message-moderate:0" by="toto@titi">
|
||||
<retracted stamp="2019-09-20T23:09:32Z" xmlns="urn:xmpp:message-retract:0" />
|
||||
<retract id='some-id' xmlns='urn:xmpp:message-retract:1'>
|
||||
<moderated by='toto@titi' xmlns='urn:xmpp:message-moderate:1'>
|
||||
<occupant-id xmlns="urn:xmpp:occupant-id:0" id="oc-id" />
|
||||
</moderated>
|
||||
<reason>R</reason>
|
||||
</moderated>
|
||||
</retract>
|
||||
</message>
|
||||
""")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user