Beispiel #1
0
        private async void WriteOutListeners(List <SniperInfo> sniperInfos)
        {
            List <SniperInfo> sniperInfosToSend = sniperInfos;

            if (!GlobalSettings.IsManaged)
            {
                sniperInfosToSend = SkipLaggedPokemonLocationValidator.Instance.FilterNonAvailableAndUpdateMissingPokemonId(sniperInfosToSend);
                var filter = FilterFactory.Create(_channelParser.Settings);
                sniperInfosToSend = SniperInfoFilter.FilterUnmanaged(sniperInfosToSend, filter);
            }
            sniperInfosToSend = sniperInfosToSend.OrderBy(m => m.ExpirationTimestamp).ToList();

            if (!GlobalSettings.IsServer)
            {
                sniperInfosToSend = MessageCache.Instance.FindUnSentMessages(sniperInfosToSend);
            }
            if (sniperInfosToSend.Any())
            {
                if (GlobalSettings.IsServer)
                {
                    _server.QueueAll(sniperInfosToSend);
                }
                else
                {
                    await ClientWriter.Instance.FeedToClients(sniperInfosToSend);
                }
            }
        }
        private List <SniperInfo> FilterOnRequest(Match match)
        {
            Filter filter = JsonConvert.DeserializeObject <Filter>(match.Groups[2].Value);

            var lastReceived = Convert.ToInt64(match.Groups[1].Value);
            var sniperInfos  = _serverRepository.FindAllNew(lastReceived, filter.VerifiedOnly || filter.MinimumIV > 0 || filter.PokemonNotInFilterMinimumIV < 101);

            return(SniperInfoFilter.FilterUnmanaged(sniperInfos, filter));
        }
Beispiel #3
0
        private void socketServer_NewMessageReceived(WebSocketSession session, string value)
        {
            try
            {
                var match        = Regex.Match(value, @"^(1?\d+)\:(?:Disturb the sound of silence)\:(2?.*)$");
                var matchRequest = Regex.Match(value, @"^(1?\d+)\:(?:I\'ve come to talk with you again\:)(2?.*)$");

                if (match.Success)
                {
                    var sniperInfos = JsonConvert.DeserializeObject <List <SniperInfo> >(match.Groups[2].Value);
                    if (sniperInfos != null && sniperInfos.Any())
                    {
                        foreach (SniperInfo sniperInfo in sniperInfos)
                        {
                            if (_serverUploadFilter.Matches(sniperInfo))
                            {
                                OnReceivedViaClients(sniperInfo);
                            }
                            else
                            {
                                Log.Trace($"Not allowing upload of {sniperInfo} but it doesn't match the upload filter");
                            }
                        }
                    }
                }
                else if (matchRequest.Success)
                {
                    Filter filter = JsonConvert.DeserializeObject <Filter>(matchRequest.Groups[2].Value);

                    var lastReceived = Convert.ToInt64(matchRequest.Groups[1].Value);
                    var sniperInfos  = _serverRepository.FindAllNew(lastReceived, filter.VerifiedOnly);

                    var sniperInfoToSend = SniperInfoFilter.FilterUnmanaged(sniperInfos, filter);

                    session.Send($"{GetEpoch()}:Hear my words that I might teach you:" +
                                 JsonConvert.SerializeObject(sniperInfoToSend));
                }
                else
                {
                    session.Send("People talking without speaking");
                }
            }
            catch (Exception e)
            {
                Log.Error($"[Session {session.SessionID}]Error during message received: ", e);
                session.Send("People talking without speaking");
            }
        }