Example #1
0
 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()
Example #2
0
    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
Example #3
0
    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
Example #4
0
 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
Example #5
0
 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))
Example #6
0
 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
Example #7
0
    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()
Example #8
0
 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()
Example #9
0
    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
Example #10
0
 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))
Example #11
0
 def getPlayerFullJID(self):
     return g_settings.server.XMPP.getFullJID(getPlayerDatabaseID())
Example #12
0
 def getName(self):
     channelName = self._data.channelName
     if getPlayerDatabaseID() != self._data.owner:
         channelName = passCensor(channelName)
     return channelName
Example #13
0
 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()
Example #14
0
 def getName(self):
     channelName = self._data.channelName
     if getPlayerDatabaseID() != self._data.owner:
         channelName = passCensor(channelName)
     return channelName
Example #15
0
 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)