def _contacts_changed(self): changes = Dictionary(signature='u(uus)') identifiers = Dictionary(signature='us') removals = Dictionary(signature='us') for contact in CONTACTS: handle = self.ensure_handle(HANDLE_TYPE_CONTACT, contact) changes[handle] = Struct((True, True, ''), signature='uus') identifiers[handle] = contact self.ContactsChangedWithID(changes, identifiers, removals) self.ContactsChanged(changes, Array([], signature='u'))
def _send_message(self, message, flags, token): headers = Dictionary({ String('message-sent'): UInt64(time()), String('message-type'): UInt32(CHANNEL_TEXT_MESSAGE_TYPE_NORMAL), }, signature='sv') body = Dictionary({ String('content-type'): String('text/plain'), String('content'): message[1]['content'], }, signature='sv') message = Array([headers, body], signature='a{sv}') self.MessageSent(message, flags, String(token)) gobject.timeout_add(50, self._message_received, str(message[1]['content']))
def _message_received(self, msg): self.__message_received_id += 1 header = Dictionary({ 'pending-message-id': UInt32(self.__message_received_id), 'message-received': UInt64(time()), 'message-sender': UInt32(self.handle), 'message-type': UInt32(CHANNEL_TEXT_MESSAGE_TYPE_NORMAL), 'sender-nickname': String(self.handle.get_name()), }, signature='sv') body = Dictionary({ String('content-type'): String('text/plain'), String('content'): String(msg), }, signature='sv') message = Array([header, body], signature='a{sv}') self.MessageReceived(message)
def GetPresences(self, contacts): presences = Dictionary(signature='u(uss)') for handle_id in contacts: handle = self.handle(HANDLE_TYPE_CONTACT, handle_id) presences[handle] = Struct( (CONNECTION_PRESENCE_TYPE_AVAILABLE, CONNECTION_PRESENCE_STATUS_AVAILABLE, "avail"), signature='uss', ) return presences
def GetContactListAttributes(self, interfaces, hold): ret = Dictionary(signature='ua{sv}') for contact in CONTACTS: handle = self.ensure_handle(HANDLE_TYPE_CONTACT, contact) ret[int(handle)] = Dictionary(signature='sv') ret[int(handle)][CONNECTION + '/contact-id'] = contact ret[int(handle)][CONNECTION_INTERFACE_ALIASING + '/alias'] = contact ret[int(handle)][CONNECTION_INTERFACE_AVATARS + '/token'] = contact ret[int(handle)][CONNECTION_INTERFACE_CONTACT_LIST + '/subscribe'] = SUBSCRIPTION_STATE_YES ret[int(handle)][CONNECTION_INTERFACE_CONTACT_LIST + '/publish'] = SUBSCRIPTION_STATE_YES ret[int(handle)][CONNECTION_INTERFACE_CONTACT_GROUPS + '/groups'] = Array([String(GROUP)], signature='s') ret[int(handle)][CONNECTION_INTERFACE_SIMPLE_PRESENCE + '/presence'] = Struct( (CONNECTION_PRESENCE_TYPE_AVAILABLE, CONNECTION_PRESENCE_STATUS_AVAILABLE, "avail"), signature='uss', ) ret[int(handle)][CONNECTION_INTERFACE_CONTACT_INFO + '/info'] = Array([ Struct(('nickname', Array([], signature='s'), Array([contact], signature='s')), signature='sasas'), Struct(('email', Array([], signature='s'), Array([contact+'@example.com'], signature='s')), signature='sasas'), ] ) return ret
def GetKnownAvatarTokens(self, contacts): tokens = Dictionary(signature='us') for handle_id in contacts: handle = self.handle(HANDLE_TYPE_CONTACT, handle_id) tokens[handle_id] = String(handle.name) return tokens
def GetAliases(self, contacts): aliases = Dictionary(signature='us') for handle_id in contacts: handle = self.handle(HANDLE_TYPE_CONTACT, handle_id) aliases[handle_id] = String(handle.name) return aliases