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); } }
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); }