diff options
author | Nicoco K <nicoco@nicoco.fr> | 2021-02-18 20:03:22 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2021-02-18 20:03:22 +0100 |
commit | dcab3de1b4a5293f355f3ef6dd31a1878dfa88be (patch) | |
tree | 442873c81b383939d50fbed036b0325c736558eb /slixmpp/plugins/xep_0356/stanza.py | |
parent | 3453ebf0c5bc5d6f9958da0ee6852271aee41ff2 (diff) | |
download | slixmpp-dcab3de1b4a5293f355f3ef6dd31a1878dfa88be.tar.gz slixmpp-dcab3de1b4a5293f355f3ef6dd31a1878dfa88be.tar.bz2 slixmpp-dcab3de1b4a5293f355f3ef6dd31a1878dfa88be.tar.xz slixmpp-dcab3de1b4a5293f355f3ef6dd31a1878dfa88be.zip |
Privileged entities (XEP-0356)
Diffstat (limited to 'slixmpp/plugins/xep_0356/stanza.py')
-rw-r--r-- | slixmpp/plugins/xep_0356/stanza.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/slixmpp/plugins/xep_0356/stanza.py b/slixmpp/plugins/xep_0356/stanza.py new file mode 100644 index 00000000..ef01ee3e --- /dev/null +++ b/slixmpp/plugins/xep_0356/stanza.py @@ -0,0 +1,47 @@ +from slixmpp.stanza import Message +from slixmpp.xmlstream import ( + ElementBase, + register_stanza_plugin, +) +from slixmpp.plugins.xep_0297 import Forwarded + + +class Privilege(ElementBase): + namespace = "urn:xmpp:privilege:1" + name = "privilege" + plugin_attrib = "privilege" + + def permission(self, access): + for perm in self["perms"]: + if perm["access"] == access: + return perm["type"] + + def roster(self): + return self.permission("roster") + + def message(self): + return self.permission("message") + + def presence(self): + return self.permission("presence") + + 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) + + +class Perm(ElementBase): + namespace = "urn:xmpp:privilege:1" + name = "perm" + plugin_attrib = "perm" + plugin_multi_attrib = "perms" + interfaces = {"type", "access"} + + +def register(): + register_stanza_plugin(Message, Privilege) + register_stanza_plugin(Privilege, Forwarded) + register_stanza_plugin(Privilege, Perm, iterable=True)
\ No newline at end of file |