Esempio n. 1
0
 public void IncreaseFailCounter(GoProxy proxy)
 {
     lock (proxy)
     {
         ++proxy.CurrentConcurrentFails;
     }
 }
Esempio n. 2
0
 public void ResetFailCounter(GoProxy proxy)
 {
     if (proxy != null)
     {
         proxy.ClearFailCounter();
     }
 }
Esempio n. 3
0
 public void RemoveProxy(GoProxy proxy)
 {
     lock (Proxies)
     {
         Proxies.Remove(proxy);
     }
 }
Esempio n. 4
0
        public GoProxy GetRandomProxy()
        {
            if (Proxies == null) return null;
            
            List<GoProxy> availableProxies = new List<GoProxy>();

            lock (Proxies)
            {

                availableProxies = Proxies.Where(x =>
                            x.Status == GoProxy.ProxyStatus.Good &&
                            x.MaxConcurrentFails > x.CurrentConcurrentFails &&
                            x.MaxCreations > x.CurrentCreations &&
                            (!x.CoolDownTimer.IsRunning || x.CoolDownTimer.Elapsed.Minutes >= x.CoolDownMinutes)).ToList();

                if (availableProxies.Count == 0)
                {
                    return null;
                }

                GoProxy returnProxy = availableProxies[GetRandom(0, availableProxies.Count)];

                MarkOnCoolDown(returnProxy);
                ProxyUsed(returnProxy, true);

                return returnProxy;
            }
        }
Esempio n. 5
0
 public bool AddProxy(GoProxy proxy)
 {
     if (proxy == null) return false;
     lock (Proxies)
     {
         return Proxies.Add(proxy);
     }
 }
Esempio n. 6
0
 public bool AddProxy(GoProxy proxy)
 {
     if (proxy == null)
     {
         return(false);
     }
     lock (Proxies)
     {
         return(Proxies.Add(proxy));
     }
 }
Esempio n. 7
0
 public void MarkOnCoolDown(GoProxy proxy, bool onCoolDown = false)
 {
     lock (proxy)
     {
         if (onCoolDown)
         {
             proxy.CoolDownTimer.Restart();
             proxy.CurrentCreations = 0;
         }
         else
         {
             proxy.CoolDownTimer.Stop();
             proxy.CoolDownTimer.Reset();
         }
     }
 }
Esempio n. 8
0
        public void ProxyUsed(GoProxy proxy, bool addition = true)
        {
            lock (proxy)
            {
                if (addition)
                {
                    ++proxy.CurrentCreations;
                }
                else
                {
                    --proxy.CurrentCreations;
                }

                if (proxy.CurrentCreations >= proxy.MaxCreations)
                {
                    MarkOnCoolDown(proxy, true);
                }
            }
        }
Esempio n. 9
0
        public bool AddProxy(string data)
        {
            ProxyEx proxy = null;

            if (!ProxyEx.TryParse(data, out proxy))
            {
                return false;
            }


            GoProxy goProxy = new GoProxy
            {
                Address = proxy.Address,
                Password = proxy.Password,
                Port = proxy.Port,
                Username = proxy.Username
            };

            return AddProxy(goProxy);
        }
Esempio n. 10
0
        public async Task TestProxy(GoProxy proxy)
        {
            if (proxy.Address.Equals("127.0.0.1"))
            {
                proxy.GoodProxy = true;
                return;
            }

            try
            {
                using (var webClient = new WebClient())
                {
                    webClient.Proxy = proxy.AsWebProxy();
                    await webClient.DownloadStringTaskAsync("https://club.pokemon.com/us/pokemon-trainer-club/");
                }
                proxy.GoodProxy = true;
            }
            catch (Exception e)
            {
                proxy.GoodProxy = false;
            }
        }