Source code for slixmpp.plugins.xep_0356.stanza

from slixmpp.stanza import Message
from slixmpp.xmlstream import (
    ElementBase,
    register_stanza_plugin,
)
from slixmpp.plugins.xep_0297 import Forwarded


[docs]class Privilege(ElementBase): namespace = "urn:xmpp:privilege:1" name = "privilege" plugin_attrib = "privilege"
[docs] def permission(self, access): for perm in self["perms"]: if perm["access"] == access: return perm["type"]
[docs] def roster(self): return self.permission("roster")
[docs] def message(self): return self.permission("message")
[docs] def presence(self): return self.permission("presence")
[docs] def add_perm(self, access, type): # This should only be needed for servers, so maybe out of scope for slixmpp perm = Perm() perm["type"] = type perm["access"] = access self.append(perm)
[docs]class Perm(ElementBase): namespace = "urn:xmpp:privilege:1" name = "perm" plugin_attrib = "perm" plugin_multi_attrib = "perms" interfaces = {"type", "access"}
[docs]def register(): register_stanza_plugin(Message, Privilege) register_stanza_plugin(Privilege, Forwarded) register_stanza_plugin(Privilege, Perm, iterable=True)