public static NewsAnalysis ConvertItem(RssFeedItem newsItem) { return new NewsAnalysis { ID = newsItem.NewsItemID, TimeDate = newsItem.PubDate.ToString(), HeadLine = newsItem.Title }; }
public List<RssFeedItem> GetRssFeed(string rssUrl) { const int maxAttempts = 10; var attempt = 0; while (attempt++ < maxAttempts) { try { var rssFeed = XElement.Load(rssUrl); var items = new List<RssFeedItem>(); foreach (var i in rssFeed.Element("channel").Elements("item")) { var description = ElementValue(i.Element("description").Value); var contentRaw = !String.IsNullOrWhiteSpace(description) ? description : ElementValue(i.Element("title").Value); var content = contentRaw.Trim().Replace("<pre>", String.Empty).Replace("</pre>", String.Empty); var itemId = ElementValue((i.Element("NewsItemID") ?? i.Element("guid")).Value); var r = new RssFeedItem(); r.Publisher = ElementValue( (i.Element("publisher") ?? i.Element("author") ?? i.Element(XName.Get("provider", "http://www.fxstreet.com/syndicate/rss/namespaces/")) ?? new XElement("EmptyElement", string.Empty)) .Value); var index = content.IndexOf("DJ Codes", StringComparison.Ordinal); if (index == -1) { r.Description = content; } else { try { r.Description = content.Remove(index); } catch (Exception) { r.Description = content; } } r.IsRead = false; r.PubDate = GetDateTime(ElementValue((i.Element("pubDateET") ?? i.Element("pubDate")).Value)); r.Title = ElementValue(i.Element("title").Value).Trim(); r.NewsItemID = (string.IsNullOrEmpty(itemId) ? content.MD5HashString() : itemId).Trim(); items.Add(r); } return items; } catch (Exception exn) { _logger.Log(exn, "Exception occurs during parsing RSS: {0}", rssUrl); if (attempt >= maxAttempts) { return null; } } } return null; }