Пример #1
0
        private async Task <List <IpAddressRange> > GetDotaIpRanges()
        {
            List <IpAddressRange> result;

            if (!_cache.TryGetValue("dota_ip_ranges", out result))
            {
                result = new List <IpAddressRange>();
                WebRequest request = WebRequest.CreateHttp("http://media.steampowered.com/apps/sdr/network_config.json");
                request.Method = "GET";
                var response = await request.GetResponseAsync();

                var          responseStream = response.GetResponseStream();
                StreamReader reader         = new StreamReader(responseStream, Encoding.UTF8);
                string       content        = reader.ReadToEnd();
                reader.Close();
                var json = JsonDocument.Parse(content).RootElement;
                if (json.TryGetProperty("data_centers", out var datacenters))
                {
                    foreach (var datacenter in datacenters.EnumerateArray())
                    {
                        if (datacenter.TryGetProperty("address_ranges", out var addressRanges))
                        {
                            foreach (var addressRange in addressRanges.EnumerateArray())
                            {
                                result.Add(IpAddressRange.Parse(addressRange.ToString()));
                            }
                        }
                    }
                }
                result.Add(new IpAddressRange("127.0.0.1", "127.0.0.1"));
                result.Add(new IpAddressRange("::1", "::1"));
                _cache.Set("dota_ip_ranges", result, TimeSpan.FromDays(1));
            }
            return(result);
        }
        private async Task <List <IpAddressRange> > GetDotaIpRanges()
        {
            List <IpAddressRange> result = null;

            if (!_cache.TryGetValue("dota_ip_ranges", out result))
            {
                result = new List <IpAddressRange>();
                WebRequest request = WebRequest.CreateHttp("http://media.steampowered.com/apps/sdr/network_config.json");
                request.Method = "GET";
                var response = await request.GetResponseAsync();

                var          responseStream = response.GetResponseStream();
                StreamReader reader         = new StreamReader(responseStream, Encoding.UTF8);
                string       content        = reader.ReadToEnd();
                var          json           = JObject.Parse(content);
                var          datacenters    = json["data_centers"] as JObject;
                if (datacenters != null)
                {
                    foreach (var datacenter in datacenters)
                    {
                        var addressRanges = datacenter.Value["address_ranges"] as JArray;
                        if (addressRanges != null)
                        {
                            foreach (var addressRange in addressRanges)
                            {
                                result.Add(IpAddressRange.Parse((string)addressRange));
                            }
                        }
                    }
                }
                result.Add(new IpAddressRange("127.0.0.1", "127.0.0.1"));
                result.Add(new IpAddressRange("::1", "::1"));
                _cache.Set("dota_ip_ranges", result, TimeSpan.FromDays(1));
            }
            return(result);
        }