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: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>
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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>
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user