Exemplo n.º 1
0
        private IEnumerable <SyndicationItem> GetFromCacheOrFactory(SyndicationItemFactory syndicationFactory, SyndicationFeedPageType currentPage, IEnumerable <Category> parsedCategories)
        {
            var cacheTime = currentPage.CacheFeedforSeconds;

            string categoryQuery = string.Empty;

            foreach (var category in parsedCategories)
            {
                categoryQuery += category.Name;
            }

            var cacheKey = string.Format("SyndicationFeedPageType_{0}_{1}", currentPage.ContentLink.ToString(), categoryQuery);

            var cachedItems = CacheManager.Get(cacheKey) as IEnumerable <SyndicationItem>;

            if (cachedItems == null)
            {
                cachedItems = syndicationFactory.GetSyndicationItems();

                if (cacheTime > 0)
                {
                    var cachePolicy = new CacheEvictionPolicy(new[] { DataFactoryCache.PageCommonCacheKey(currentPage.ContentLink) }
                                                              , new TimeSpan(0, 0, cacheTime),
                                                              CacheTimeoutType.Absolute);

                    CacheManager.Insert(cacheKey, syndicationFactory.GetSyndicationItems(), cachePolicy);
                }
            }

            return(cachedItems);
        }
Exemplo n.º 2
0
        public ActionResult Index(SyndicationFeedPageType currentPage)
        {
            var syndicationFactory = new SyndicationItemFactory(ContentLoader, FeedContentResolver, currentPage);

            var feed = new SyndicationFeed
            {
                Items       = syndicationFactory.GetSyndicationItems(),
                Id          = currentPage.ContentGuid.ToString(),
                Title       = new TextSyndicationContent(currentPage.PageName),
                Description = new TextSyndicationContent(currentPage.Description),
            };

            if (feed.Items.Any())
            {
                feed.LastUpdatedTime = feed.Items.Max(m => m.LastUpdatedTime);
            }

            if (currentPage.FeedFormat == FeedFormat.Atom)
            {
                return(new AtomActionResult(feed));
            }

            return(new RssActionResult(feed));
        }