Esempio n. 1
0
        public void run_example()
        {
            // get regions from resource
            var regions = IPRangesParser.ParseFromResources().SelectMany(x => x.Regions);

            // create regions dictionary
            var dictionary = new IPRangeDictionary <IPRangesRegion>();

            foreach (var region in regions)
            {
                foreach (var range in region.Ranges)
                {
                    dictionary.Add(range, region);
                }
            }

            var ipAddress = IPAddress.Parse("23.20.123.123");

            // test if IP address is within any region
            var foundRegion = dictionary[ipAddress]; // throws KeyNotFoundException if not found

            Console.WriteLine("IP address '{0}' is in region '{1}'", ipAddress, foundRegion);

            // or better (to avoid KeyNotFoundException)
            IPRangesRegion value;

            if (dictionary.TryGetValue(ipAddress, out value))
            {
                Console.WriteLine("IP address '{0}' is in region '{1}'", ipAddress, foundRegion);
            }
        }
Esempio n. 2
0
        public void parse_resources_and_check_consistency()
        {
            var any    = false;
            var prefix = typeof(IPRangesParser).Namespace;

            foreach (var group in IPRangesParser.ParseFromResources(prefix + ".Resources"))
            {
                any = true;
                Assert.False(string.IsNullOrEmpty(group.Name));
                Assert.NotEqual(0, group.Regions.Count);

                foreach (var region in group.Regions)
                {
                    Assert.False(string.IsNullOrEmpty(region.Id), String.Format("Region is missing an ID: {0}", region.Name));
                    Assert.NotEqual(0, region.Ranges.Count);
                }
            }

            Assert.True(any);
        }