private static Dictionary <string, DomainValue> ParseMaps(JToken maps) { var toReturn = new Dictionary <string, DomainValue>(); if (maps != null && maps.Type == JTokenType.Object) { foreach (JProperty map in maps.Where(m => m is JProperty)) { if (map.Value.Type == JTokenType.Object) { toReturn.Add(map.Name, new DomainValue(map.Value.ToString())); } else if (map.Value.Type == JTokenType.String) { DomainValue newMap = DomainValue.FromIP((string)map.Value); if (newMap != null) { toReturn.Add(map.Name, newMap); } } else if (map.Value.Type == JTokenType.Array) { var ipStrings = ((JArray)map.Value).Where(m => m.Type == JTokenType.String).Select(m => m.Value <string>()); DomainValue newMap = DomainValue.FromIP(ipStrings); if (newMap != null) { toReturn.Add(map.Name, newMap); } } } } return(toReturn); }
private static DomainValue FromIP(string p) { IPAddress ip = TryGetIP(p); if (ip != null) { return(DomainValue.FromIP(ip)); } else { return(null); } }