Source code for slixmpp.plugins.xep_0131.stanza


# Slixmpp: The Slick XMPP Library
# Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
# This file is part of Slixmpp.
# See the file LICENSE for copying permission.
from slixmpp.xmlstream import ET, ElementBase


[docs] class Headers(ElementBase): name = 'headers' namespace = 'http://jabber.org/protocol/shim' plugin_attrib = 'headers' interfaces = {'headers'} is_extension = True
[docs] def get_headers(self): result = {} headers = self.xml.findall('{%s}header' % self.namespace) for header in headers: name = header.attrib.get('name', '') value = header.text if name in result: if not isinstance(result[name], set): result[name] = [result[name]] else: result[name] = [] result[name].add(value) else: result[name] = value return result
[docs] def set_headers(self, values): self.del_headers() for name in values: vals = values[name] if not isinstance(vals, (list, set)): vals = [values[name]] for value in vals: header = ET.Element('{%s}header' % self.namespace) header.attrib['name'] = name header.text = value self.xml.append(header)
[docs] def del_headers(self): headers = self.xml.findall('{%s}header' % self.namespace) for header in headers: self.xml.remove(header)