2020-12-04 12:38:59 +01:00

56 lines
1.5 KiB
Python

"""
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
class JingleMessage(ElementBase):
namespace = 'urn:xmpp:jingle-message:0'
interfaces = {'id'}
class Propose(JingleMessage):
name = 'propose'
plugin_attrib = 'jingle_propose'
interfaces = {'id', 'descriptions'}
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
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)
def del_descriptions(self):
for desc in self.xml.findall('{*}description'):
self.xml.remove(desc)
class Retract(JingleMessage):
name = 'retract'
plugin_attrib = 'jingle_retract'
class Accept(JingleMessage):
name = 'accept'
plugin_attrib = 'jingle_accept'
class Proceed(JingleMessage):
name = 'proceed'
plugin_attrib = 'jingle_proceed'
class Reject(JingleMessage):
name = 'reject'
plugin_attrib = 'jingle_reject'