public static WolframTaxonomyData GetInstance(WolframResponseDto dto) { if (dto == null || dto.Success == null || dto.Success.ToLower() != "true") { return(NULL); } const string pattern = "(Entity)(\\[.*?\\])"; var matches = Regex.Matches(dto.Result, pattern); var results = (from Match match in matches select match.Groups[2].ToString() into arrayString select JsonConvert.DeserializeObject <String[]>(arrayString) into entityResult select entityResult.Length > 1 ? entityResult[1] : "" into rawValue where rawValue.Contains(":") select rawValue.Split(':')). ToDictionary(splitResult => splitResult[0].ToLower().Trim(), splitResult => splitResult[1].Trim()); var kingdom = results.ContainsKey("kingdom") ? results["kingdom"] : ""; var phylum = results.ContainsKey("phylum") ? results["phylum"] : ""; var tclass = results.ContainsKey("class") ? results["class"] : ""; var order = results.ContainsKey("order") ? results["order"] : ""; var family = results.ContainsKey("family") ? results["family"] : ""; var genus = results.ContainsKey("genus") ? results["genus"] : ""; //For some reason, Wolfram encodes species names as Genus + Species combined. Derp! var species = results.ContainsKey("species") ? results["species"].Replace(genus, "") : ""; return(GetInstance(kingdom, phylum, tclass, order, family, genus, species)); }
public static WolframCommonNameData GetInstance(WolframResponseDto dto) { if (dto == null || dto.Success == null || dto.Success.ToLower() != "true") { return(NULL); } var rawName = dto.Result.Replace("\"", ""); var name = String.Equals("Missing[NotAvailable]", rawName, StringComparison.InvariantCultureIgnoreCase) ? "" : rawName; return(GetInstance(name)); }