Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }