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