Skip to content
Back to top

# Source code for slixmpp.plugins.xep_0437.stanza

    # 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)