123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- """
- SleekXMPP: The Sleek XMPP Library
- Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
- This file is part of SleekXMPP.
- See the file LICENSE for copying permission.
- """
- from base64 import b64encode, b64decode
- from sleekxmpp.util import bytes as sbytes
- from sleekxmpp.xmlstream import ET, ElementBase, register_stanza_plugin
- class Data(ElementBase):
- name = 'data'
- namespace = 'urn:xmpp:avatar:data'
- plugin_attrib = 'avatar_data'
- interfaces = set(['value'])
- def get_value(self):
- if self.xml.text:
- return b64decode(sbytes(self.xml.text))
- return ''
- def set_value(self, value):
- if value:
- self.xml.text = b64encode(sbytes(value))
- # Python3 base64 encoded is bytes and needs to be decoded to string
- if isinstance(self.xml.text, bytes):
- self.xml.text = self.xml.text.decode()
- else:
- self.xml.text = ''
- def del_value(self):
- self.xml.text = ''
- class MetaData(ElementBase):
- name = 'metadata'
- namespace = 'urn:xmpp:avatar:metadata'
- plugin_attrib = 'avatar_metadata'
- interfaces = set()
- def add_info(self, id, itype, ibytes, height=None, width=None, url=None):
- info = Info()
- info.values = {'id': id,
- 'type': itype,
- 'bytes': '%s' % ibytes,
- 'height': height,
- 'width': width,
- 'url': url}
- self.append(info)
- def add_pointer(self, xml):
- if not isinstance(xml, Pointer):
- pointer = Pointer()
- pointer.append(xml)
- self.append(pointer)
- else:
- self.append(xml)
- class Info(ElementBase):
- name = 'info'
- namespace = 'urn:xmpp:avatar:metadata'
- plugin_attrib = 'info'
- plugin_multi_attrib = 'items'
- interfaces = set(['bytes', 'height', 'id', 'type', 'url', 'width'])
- class Pointer(ElementBase):
- name = 'pointer'
- namespace = 'urn:xmpp:avatar:metadata'
- plugin_attrib = 'pointer'
- plugin_multi_attrib = 'pointers'
- interfaces = set()
- register_stanza_plugin(MetaData, Info, iterable=True)
- register_stanza_plugin(MetaData, Pointer, iterable=True)
|