Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
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'
[docs]
class RAI ( ElementBase ):
name = 'rai'
plugin_attrib = 'rai'
namespace = NS
interfaces = { 'activities' }
[docs]
def get_activities ( self ) -> Iterable [ JID ]:
return [ JID ( el . xml . text ) for el in self if isinstance ( el , Activity )]
[docs]
def del_activities ( self ):
for el in self . xml . findall ( '{ %s }activity' % NS ):
self . xml . remove ( el )
[docs]
def set_activities ( self , activities : Iterable [ JID ]):
self . del_activities ()
for jid in activities :
act = Activity ()
act . xml . text = str ( jid )
self . append ( act )
[docs]
class Activity ( ElementBase ):
name = 'activity'
plugin_attrib = 'activity'
namespace = NS
[docs]
def register_plugins ():
register_stanza_plugin ( RAI , Activity , iterable = True )
register_stanza_plugin ( Presence , RAI )