Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for slixmpp.plugins.xep_0353.stanza
# slixmpp: The Slick XMPP Library
# Copyright (C) 2020 Emmanuel Gil Peyrot
# This file is part of slixmpp.
# See the file LICENSE for copying permission.
from typing import Iterable , List , Tuple
from slixmpp.xmlstream import ElementBase , ET
[docs]
class JingleMessage ( ElementBase ):
namespace = 'urn:xmpp:jingle-message:0'
interfaces = { 'id' }
[docs]
class Propose ( JingleMessage ):
name = 'propose'
plugin_attrib = 'jingle_propose'
interfaces = { 'id' , 'descriptions' }
[docs]
def get_descriptions ( self ) -> List [ Tuple [ str , str ]]:
result = []
for desc in self . xml :
namespace = desc . tag . split ( '}' )[ 0 ][ 1 :]
media = desc . attrib [ 'media' ]
result . append (( namespace , media ))
return result
[docs]
def set_descriptions ( self , descriptions : Iterable [ Tuple [ str , str ]]):
self . del_descriptions ()
for namespace , media in descriptions :
desc = ET . Element ( '{ %s }description' % namespace )
desc . attrib [ 'media' ] = media
self . xml . append ( desc )
[docs]
def del_descriptions ( self ):
for desc in self . xml . findall ( '{*}description' ):
self . xml . remove ( desc )
[docs]
class Retract ( JingleMessage ):
name = 'retract'
plugin_attrib = 'jingle_retract'
[docs]
class Accept ( JingleMessage ):
name = 'accept'
plugin_attrib = 'jingle_accept'
[docs]
class Proceed ( JingleMessage ):
name = 'proceed'
plugin_attrib = 'jingle_proceed'
[docs]
class Reject ( JingleMessage ):
name = 'reject'
plugin_attrib = 'jingle_reject'