public new SyndicationFeed GetRssFeed(I_Base_Rss_Feed rssFeed, ISitecoreContext sitecoreContext, IItemReferences itemReferences) { SyndicationFeed feed = base.GetRssFeed(rssFeed, sitecoreContext, itemReferences); feed = AddFeedLinksToFeed(feed, rssFeed); feed.Title = new TextSyndicationContent(GetSearchFeedTitle()); return(feed); }
/// <summary> /// Add the channel links /// </summary> /// <param name="feed"></param> /// <returns></returns> public new SyndicationFeed AddFeedLinksToFeed(SyndicationFeed feed, I_Base_Rss_Feed rssFeed) { string searchUrl = GetSearchUrl(WebUtil.GetHostName()); feed.Links.Add(SyndicationLink.CreateAlternateLink(new Uri(searchUrl))); feed.ElementExtensions.Add(new XElement(RssConstants.AtomNamespace + "link", new XAttribute("href", new Uri(searchUrl)), new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml"))); return(feed); }
public SyndicationFeed AddFeedLinksToFeed(SyndicationFeed feed, I_Base_Rss_Feed rssFeed) { if (!string.IsNullOrEmpty(rssFeed.Link)) { feed.Links.Add(SyndicationLink.CreateAlternateLink(new Uri(rssFeed.Link))); feed.ElementExtensions.Add(new XElement(RssConstants.AtomNamespace + "link", new XAttribute("href", new Uri(rssFeed.Link)), new XAttribute("rel", "self"), new XAttribute("type", "application/rss+xml"))); } return(feed); }
public SyndicationFeed GetRssFeed(I_Base_Rss_Feed rssFeed, ISitecoreContext sitecoreContext, IItemReferences itemReferences) { var feed = new SyndicationFeed(); feed.AttributeExtensions.Add(new XmlQualifiedName("atom", XNamespace.Xmlns.NamespaceName), RssConstants.AtomNamespace.ToString()); feed.AttributeExtensions.Add(new XmlQualifiedName(RssConstants.InformaNamespace.ToString(), XNamespace.Xmlns.NamespaceName), RssConstants.InformaNamespaceUrl.ToString()); feed.Title = new TextSyndicationContent(rssFeed.Title); feed.Language = rssFeed.Language; feed.Description = new TextSyndicationContent(rssFeed.Description); feed = AddCopyrightTextToFeed(feed, sitecoreContext, Constants.ScripRootNode, rssFeed); feed = AddFeedLinksToFeed(feed, rssFeed); feed = AddWebMasterToFeed(feed, rssFeed); return(feed); }
/// <summary> /// Add the copyright text to the rss channel, this is pulled from Sitecore global config. The value /// can be overridden per feed if this field is filled /// </summary> /// <param name="feed"></param> /// <returns></returns> public SyndicationFeed AddCopyrightTextToFeed(SyndicationFeed feed, ISitecoreContext sitecoreContext, string siteConfigItemId, I_Base_Rss_Feed rssFeed) { if (string.IsNullOrEmpty(rssFeed.Copyright)) { var siteConfig = sitecoreContext.GetItem <ISite_Root>(siteConfigItemId); feed.Copyright = new TextSyndicationContent(siteConfig.Copyright_Text); } else { feed.Copyright = new TextSyndicationContent(rssFeed.Copyright); } return(feed); }
private SyndicationFeed AddWebMasterToFeed(SyndicationFeed feed, I_Base_Rss_Feed rssFeed) { feed.ElementExtensions.Add(new XElement("webMaster", rssFeed.Web_Master)); return(feed); }
/// <summary> /// Returns the xml rss string /// </summary> /// <returns></returns> public string GetSearchRssXml() { Item currentItem = Sitecore.Context.Item; I_Base_Rss_Feed rssFeedItem = currentItem.GlassCast <I_Base_Rss_Feed>(inferType: false); SyndicationFeed feed = null; Stopwatch sw = Stopwatch.StartNew(); var feedGenerator = _RssFeedGeneration; StringExtensions.WriteSitecoreLogs("Time taken to Create Feedgenerator", sw, "feedGenerator"); if (feedGenerator == null) { Log.Error("Could Not Create RSS Feed Geneartor " + rssFeedItem.Rss_Feed_Generation, this); return(string.Empty); } sw = Stopwatch.StartNew(); feed = feedGenerator.GetRssFeed(rssFeedItem, _sitecoreContext, _itemReferences); StringExtensions.WriteSitecoreLogs("Time taken to Create GetRssFeed", sw, "GetRssFeed"); if (feed == null) { Log.Error("Could Not Create RSS Feed With " + rssFeedItem.Rss_Feed_Generation, this); return(string.Empty); } var formatter = new Rss20FeedFormatter(feed); formatter.SerializeExtensionsAsAtom = false; sw = Stopwatch.StartNew(); var itemRetriever = _RssSitecoreItemRetrieval; StringExtensions.WriteSitecoreLogs("Time taken to Create itemRetriever", sw, "itemRetriever"); if (itemRetriever == null) { Log.Error("Could Not Create Item Retriever With " + rssFeedItem.Sitecore_Item_Retrieval, this); return(string.Empty); } var rssItemGenerator = _RssItemGeneration; if (rssItemGenerator == null) { Log.Error("Could Not Create Item Generator With " + rssFeedItem.Rss_Item_Generation, this); return(string.Empty); } sw = Stopwatch.StartNew(); var sitecoreItems = itemRetriever.GetSitecoreItems(currentItem); StringExtensions.WriteSitecoreLogs("Time taken to Create sitecoreItems", sw, "GetSitecoreItems"); List <SyndicationItem> syndicationItems = new List <SyndicationItem>(); foreach (Item sitecoreItem in sitecoreItems) { var syndicationItem = rssItemGenerator.GetSyndicationItemFromSitecore(_sitecoreContext, sitecoreItem); if (syndicationItem == null) { continue; } syndicationItems.Add(syndicationItem); } feed.Items = syndicationItems; var output = new StringBuilder(); using (var writer = XmlWriter.Create(output, new XmlWriterSettings { Indent = true })) { feed.SaveAsRss20(writer); writer.Flush(); writer.Close(); string rs = output.ToString().Replace("utf-16", "utf-8"); rs = RemoveInvalidXmlChars(rs); return(rs); } }