Source code for slixmpp.plugins.xep_0356.stanza

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

NS = "urn:xmpp:privilege:2"


[docs] class Privilege(ElementBase): namespace = NS 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 = NS name = "perm" plugin_attrib = "perm" plugin_multi_attrib = "perms" interfaces = {"type", "access"}
[docs] class NameSpace(ElementBase): namespace = NS name = "namespace" plugin_attrib = "namespace" plugin_multi_attrib = "namespaces" interfaces = {"ns", "type"}
[docs] class PrivilegedIq(ElementBase): namespace = NS name = "privileged_iq" plugin_attrib = "privileged_iq"
[docs] def register(): register_stanza_plugin(Message, Privilege) register_stanza_plugin(Iq, Privilege) register_stanza_plugin(Privilege, Forwarded) register_stanza_plugin(Privilege, Perm, iterable=True) register_stanza_plugin(Perm, NameSpace, iterable=True) register_stanza_plugin(Iq, PrivilegedIq)