c623e1af3f57f213bbccec41bc50c9428b25f525
[theonering] / src / avatars.py
1 import logging
2
3 import telepathy
4
5
6 class ButterflyAvatars(telepathy.server.ConnectionInterfaceAvatars):
7
8         def __init__(self):
9                 self._avatar_known = False
10                 telepathy.server.ConnectionInterfaceAvatars.__init__(self)
11
12         def GetAvatarRequirements(self):
13                 mime_types = ("image/png","image/jpeg","image/gif")
14                 return (mime_types, 96, 96, 192, 192, 500 * 1024)
15
16         def GetKnownAvatarTokens(self, contacts):
17                 result = {}
18                 for handle_id in contacts:
19                         handle = self.handle(telepathy.HANDLE_TYPE_CONTACT, handle_id)
20                         if handle == self.GetSelfHandle():
21                                 contact = handle.profile
22                         else:
23                                 contact = handle.contact
24
25                         if contact is not None:
26                                 msn_object = contact.msn_object
27                         else:
28                                 msn_object = None
29
30                         if msn_object is not None:
31                                 result[handle] = msn_object._data_sha.encode("hex")
32                         elif self._avatar_known:
33                                 result[handle] = ""
34                 return result
35
36         def RequestAvatars(self, contacts):
37                 for handle_id in contacts:
38                         handle = self.handle(telepathy.HANDLE_TYPE_CONTACT, handle_id)
39                         if handle == self.GetSelfHandle():
40                                 msn_object = self.msn_client.profile.msn_object
41                                 self._msn_object_retrieved(msn_object, handle)
42                         else:
43                                 contact = handle.contact
44                                 if contact is not None:
45                                         msn_object = contact.msn_object
46                                 else:
47                                         msn_object = None
48                                 if msn_object is not None:
49                                         self.msn_client.msn_object_store.request(msn_object,\
50                                                         (self._msn_object_retrieved, handle))
51
52         def SetAvatar(self, avatar, mime_type):
53                 self._avatar_known = True
54                 if not isinstance(avatar, str):
55                         avatar = "".join([chr(b) for b in avatar])
56                 avatarToken = 0
57                 logging.info("Setting self avatar to %s" % avatarToken)
58                 return avatarToken
59
60         def ClearAvatar(self):
61                 self.msn_client.profile.msn_object = None
62                 self._avatar_known = True