Bump to 1.3.1
[slixmpp.git] / sleekxmpp / plugins / xep_0084 / stanza.py
blob22f11b728b63b9fb600abdc45bb7759bea0c2840
1 """
2 SleekXMPP: The Sleek XMPP Library
3 Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
4 This file is part of SleekXMPP.
6 See the file LICENSE for copying permission.
7 """
9 from base64 import b64encode, b64decode
11 from sleekxmpp.util import bytes
12 from sleekxmpp.xmlstream import ET, ElementBase, register_stanza_plugin
15 class Data(ElementBase):
16 name = 'data'
17 namespace = 'urn:xmpp:avatar:data'
18 plugin_attrib = 'avatar_data'
19 interfaces = set(['value'])
21 def get_value(self):
22 if self.xml.text:
23 return b64decode(bytes(self.xml.text))
24 return ''
26 def set_value(self, value):
27 if value:
28 self.xml.text = b64encode(bytes(value))
29 else:
30 self.xml.text = ''
32 def del_value(self):
33 self.xml.text = ''
36 class MetaData(ElementBase):
37 name = 'metadata'
38 namespace = 'urn:xmpp:avatar:metadata'
39 plugin_attrib = 'avatar_metadata'
40 interfaces = set()
42 def add_info(self, id, itype, ibytes, height=None, width=None, url=None):
43 info = Info()
44 info.values = {'id': id,
45 'type': itype,
46 'bytes': '%s' % ibytes,
47 'height': height,
48 'width': width,
49 'url': url}
50 self.append(info)
52 def add_pointer(self, xml):
53 if not isinstance(xml, Pointer):
54 pointer = Pointer()
55 pointer.append(xml)
56 self.append(pointer)
57 else:
58 self.append(xml)
61 class Info(ElementBase):
62 name = 'info'
63 namespace = 'urn:xmpp:avatar:metadata'
64 plugin_attrib = 'info'
65 plugin_multi_attrib = 'items'
66 interfaces = set(['bytes', 'height', 'id', 'type', 'url', 'width'])
69 class Pointer(ElementBase):
70 name = 'pointer'
71 namespace = 'urn:xmpp:avatar:metadata'
72 plugin_attrib = 'pointer'
73 plugin_multi_attrib = 'pointers'
74 interfaces = set()
77 register_stanza_plugin(MetaData, Info, iterable=True)
78 register_stanza_plugin(MetaData, Pointer, iterable=True)