def restoreFromCache(self): if self.__storageCache: return from messenger.ext.player_helpers import getPlayerDatabaseID, getPlayerName self.__storageCache = StorageLocalCache((getPlayerDatabaseID(), getPlayerName(), 'storage')) self.__storageCache.onRead += self.__onRead self.__storageCache.read()
def __pe_onClanMembersListChanged(self): clanMembers = getattr(BigWorld.player(), 'clanMembers', {}) LOG_DEBUG('setClanMembersList', clanMembers) if not self.__initSteps & _INIT_STEPS.MEMBERS_LIST_RECEIVED: self.__initSteps |= _INIT_STEPS.MEMBERS_LIST_RECEIVED clanAbbrev = self.playerCtx.getClanAbbrev() members = [] if self.__clanChannel is not None: getter = self.__clanChannel.getMember else: getter = lambda dbID: None playerID = getPlayerDatabaseID() for dbID, name in clanMembers.iteritems(): isOnline = False if getter(dbID) is None else True if playerID == dbID: continue members.append( BWUserEntity(dbID, name=name, clanAbbrev=clanAbbrev, isOnline=isOnline)) self.usersStorage._setClanMembersList(members) if self.__initSteps & _INIT_STEPS.LIST_INITED != 0: g_messengerEvents.users.onClanMembersListChanged() return
def __pe_onClanMembersListChanged(self): clanMembers = getattr(BigWorld.player(), 'clanMembers', {}) LOG_DEBUG('setClanMembersList', clanMembers) if not self.__initSteps & _INIT_STEPS.MEMBERS_LIST_RECEIVED: self.__initSteps |= _INIT_STEPS.MEMBERS_LIST_RECEIVED clanAbbrev = self.playerCtx.getClanAbbrev() members = [] if self.__clanChannel is not None: getter = self.__clanChannel.getMember else: getter = lambda dbID: None playerID = getPlayerDatabaseID() for dbID, (name, roleFlags) in clanMembers.iteritems(): if getter(dbID) is None: gos = GAME_ONLINE_STATUS.UNDEFINED else: gos = GAME_ONLINE_STATUS.ONLINE if playerID == dbID: user = CurrentUserEntity(dbID, name=name, clanInfo=ClanInfo(0L, clanAbbrev, roleFlags)) else: user = SharedUserEntity(dbID, name=name, clanInfo=ClanInfo(0L, clanAbbrev, roleFlags), gos=gos, tags={USER_TAG.CLAN_MEMBER}) members.append(user) self.usersStorage._setClanMembersList(members) if self.__initSteps & _INIT_STEPS.LIST_INITED != 0: g_messengerEvents.users.onClanMembersListChanged() return
def getFullJID(self, databaseID = None): if databaseID is None: databaseID = getPlayerDatabaseID() raise databaseID or AssertionError("Player's databaseID can not be empty") jid = ContactJID() jid.setNode(databaseID) jid.setDomain(self.domain) jid.setResource(self.resource) return jid
def sendMessage(self, jid, body, filters): channel = self.channelsStorage.getChannel(entities.XMPPChatChannelEntity(jid)) if channel: if self.playerCtx.isChatBan(): error = createChatBanError(self.playerCtx.getBanInfo()) if error: g_messengerEvents.onErrorReceived(error) return dbID = getPlayerDatabaseID() name = getPlayerName() g_messengerEvents.channels.onMessageReceived(XMPPMessageData(dbID, name, filters.chainIn(dbID, body), time.time()), channel) self.client().sendMessage(ChatMessageHolder(jid, msgBody=body))
def _addChannel(self, channel, dbID, name, isJoined): contact = self.usersStorage.getUser(dbID) if contact: if contact.isIgnored(): return None isOnline = contact.isOnline() else: isOnline = False channel.addMembers([entities.XMPPMemberEntity(getPlayerDatabaseID(), getPlayerName(), True), entities.XMPPMemberEntity(dbID, name, isOnline)]) if self.channelsStorage.addChannel(channel): g_messengerEvents.channels.onChannelInited(channel) channel.setJoined(isJoined) return channel
def __pc_onClanInfoChanged(self): clanInfo = self.playerCtx.clanInfo hasClanInfo = clanInfo is not None and len(clanInfo) > 0 if not self.__initSteps & _INIT_STEPS.CLAN_INFO_RECEIVED and hasClanInfo: self.__initSteps |= _INIT_STEPS.CLAN_INFO_RECEIVED user = self.usersStorage.getUser(getPlayerDatabaseID()) if user: user.update(clanRole=self.playerCtx.getClanRole()) clanAbbrev = self.playerCtx.getClanAbbrev() for user in self.usersStorage.getClanMembersIterator(): user.update(clanAbbrev=clanAbbrev) if self.__initSteps & _INIT_STEPS.LIST_INITED != 0: g_messengerEvents.users.onClanMembersListChanged()
def __doLogin(self): client = self.client() if not client.isConnecting(): g_logOutput.warning(CLIENT_LOG_AREA.LOGIN, 'Client is not connecting', client.getConnectionAddress(), client.getConnectionState()) yield lambda callback: callback(None) return g_logOutput.debug(CLIENT_LOG_AREA.TOKEN, 'Sends request to SPA') response = yield self.__tokenRequester.request() g_logOutput.debug(CLIENT_LOG_AREA.TOKEN, 'Response is received from SPA', response) if not response: g_logOutput.error(CLIENT_LOG_AREA.TOKEN, 'Received chat token is empty') return if response.isValid(): if response.getDatabaseID() == getPlayerDatabaseID(): g_logOutput.debug(CLIENT_LOG_AREA.LOGIN, 'Login to XMPP sever') client.login(response.getCredential()) else: g_logOutput.error(CLIENT_LOG_AREA.LOGIN, "Player's database ID mismatch", getPlayerDatabaseID()) else: g_logOutput.warning(CLIENT_LOG_AREA.TOKEN, 'Received chat token is not valid', response) self.__handleTokenError()
def __pe_onClanMembersListChanged(self): clanMembers = getattr(BigWorld.player(), 'clanMembers', {}) LOG_DEBUG('setClanMembersList', clanMembers) if not self.__initSteps & _INIT_STEPS.MEMBERS_LIST_RECEIVED: self.__initSteps |= _INIT_STEPS.MEMBERS_LIST_RECEIVED clanAbbrev = self.playerCtx.getClanAbbrev() members = [] if self.__clanChannel is not None: getter = self.__clanChannel.getMember else: getter = lambda dbID: None playerID = getPlayerDatabaseID() for dbID, name in clanMembers.iteritems(): isOnline = False if getter(dbID) is None else True if playerID == dbID: continue members.append(BWUserEntity(dbID, name=name, clanAbbrev=clanAbbrev, isOnline=isOnline)) self.usersStorage._setClanMembersList(members) if self.__initSteps & _INIT_STEPS.LIST_INITED != 0: g_messengerEvents.users.onClanMembersListChanged() return
def sendMessage(self, jid, body): channel = self.channelsStorage.getChannel(entities.XMPPChatChannelEntity(jid)) if channel: g_messengerEvents.channels.onMessageReceived(XMPPMessageData(getPlayerDatabaseID(), getPlayerName(), body, time.time()), channel) self.client().sendMessage(ChatMessageHolder(jid, msgBody=body))
def getPlayerFullJID(self): return g_settings.server.XMPP.getFullJID(getPlayerDatabaseID())
def getName(self): channelName = self._data.channelName if getPlayerDatabaseID() != self._data.owner: channelName = passCensor(channelName) return channelName
def __onSelfEnterChat(self, chatAction): wrapper = ChatActionWrapper(**dict(chatAction)) channelID = wrapper.channel channel = self.channelsStorage.getChannel(entities.BWChannelLightEntity(channelID)) isJoinAction = False if not channel and channelID in self.__channels: channel = self.__channels[channelID] if self.channelsStorage.addChannel(channel): g_messengerEvents.channels.onChannelInited(channel) g_messengerEvents.channels.onPlayerEnterChannelByAction(channel) isJoinAction = True if not channel: raise ChannelNotFound(channelID) name = channel.getName() if not isJoinAction and name in self.__creationInfo and channel.getProtoData().owner == getPlayerDatabaseID(): self.__creationInfo.pop(name) g_messengerEvents.channels.onPlayerEnterChannelByAction(channel) if not channel.isJoined(): channel.setJoined(True) g_messengerEvents.channels.onConnectStateChanged(channel) self.requestChannelMembers(channelID) else: channel.clearHistory()
def getName(self): channelName = self._data.channelName if getPlayerDatabaseID() != self._data.owner: channelName = passCensor(channelName) return channelName
def __ce_onConnectStateChanged(self, channel): if self.__isPrivateOpen and channel.isJoined() and channel.isPrivate() and channel.getProtoType() == PROTO_TYPE.BW and channel.getProtoData().owner == getPlayerDatabaseID(): g_messengerEvents.channels.onPlayerEnterChannelByAction(channel)