/// <summary> /// Get a What If article by ID /// </summary> /// <param name="id">Article ID</param> /// <returns>What If article if found, null otherwise</returns> public static WhatIfArticle GetArticle(int id) { WhatIfArticle article = XkcdDatabase.GetWhatIfArticle(id); if (article != null) { return(article); } if (WhatIfDictionary.Keys.Contains(id)) { return(GetArticle(WhatIfDictionary[id])); } return(null); }
/// <summary> /// Gets a What If Article from an archive entry /// </summary> /// <param name="archiveEntry">Archive entry</param> /// <returns>Whar If Article</returns> public static WhatIfArticle GetArticle(WhatIfArchiveEntry archiveEntry) { WhatIfArticle article = XkcdDatabase.GetWhatIfArticle(archiveEntry.Id); if (article != null) { return(article); } var web = new HtmlWeb(); HtmlDocument doc = web.Load(archiveEntry.PermaLink); HtmlNode articleContentNode = doc.DocumentNode.Descendants().FirstOrDefault(x => x.Name == "article" && x.HasClass("entry")); article = new WhatIfArticle { Id = archiveEntry.Id, PermaLink = archiveEntry.PermaLink, Title = archiveEntry.Title, Date = archiveEntry.Date, Html = articleContentNode.OuterHtml }; XkcdDatabase.InsertOrUpdateWhatIfArticle(article); return(article); }