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'