""" Slixmpp: The Slick XMPP Library Copyright (C) 2020 Mathieu Pasquet This file is part of Slixmpp. See the file LICENSE for copying permission. """ from typing import Iterable from slixmpp import JID, Presence from slixmpp.xmlstream import ( ElementBase, register_stanza_plugin, ) NS = 'urn:xmpp:rai:0' class RAI(ElementBase): name = 'rai' plugin_attrib = 'rai' namespace = NS interfaces = {'activities'} def get_activities(self) -> Iterable[JID]: return [JID(el.xml.text) for el in self if isinstance(el, Activity)] def del_activities(self): for el in self.xml.findall('{%s}activity' % NS): self.xml.remove(el) def set_activities(self, activities: Iterable[JID]): self.del_activities() for jid in activities: act = Activity() act.xml.text = str(jid) self.append(act) class Activity(ElementBase): name = 'activity' plugin_attrib = 'activity' namespace = NS def register_plugins(): register_stanza_plugin(RAI, Activity, iterable=True) register_stanza_plugin(Presence, RAI)