Example #1
0
        public async Task <RssViewModel> GetAppRss()
        {
            var feed = new RssViewModel();

            feed.Posts = new List <PostView>();

            using (var context = new BlogiFireContext())
            {
                var posts = await context.Posts.Where(p => p.Visible == true).
                            OrderByDescending(p => p.Published).Take(AppSettings.PageSize).ToListAsync();

                feed.Title       = AppSettings.Title;
                feed.Description = AppSettings.Description;
                feed.Link        = AppSettings.AbsoluteUrl;

                foreach (var p in posts)
                {
                    feed.Posts.Add(new PostView
                    {
                        Title       = p.Title,
                        Author      = p.AuthorName,
                        Description = p.Content,
                        Link        = AppSettings.AbsoluteUrl + "/post/" + p.Slug,
                        Updated     = p.Published
                    });
                }
            }
            return(feed);
        }
Example #2
0
        private static RssViewModel <HomePageItemViewModel> MapUmbracoContentToViewModel(IPublishedContent publishedContent)
        {
            var model = new RssViewModel <HomePageItemViewModel>();

            model.Metadata.Title       = publishedContent.Name;
            model.Metadata.Description = publishedContent.GetPropertyValue <string>("pageDescription_Content");

            CampaignTrackingUrlTransformer linkUrlTransformer = null;
            var source   = publishedContent.GetPropertyValue <string>("CampaignTrackingSource_Analytics");
            var medium   = publishedContent.GetPropertyValue <string>("CampaignTrackingMedium_Analytics");
            var content  = publishedContent.GetPropertyValue <string>("CampaignTrackingContent_Analytics");
            var campaign = publishedContent.GetPropertyValue <string>("CampaignTrackingCampaign_Analytics");
            var regex    = publishedContent.GetPropertyValue <string>("CampaignTrackingRegex_Analytics");

            if (!String.IsNullOrEmpty(source) && !String.IsNullOrEmpty(medium) && !String.IsNullOrEmpty(campaign))
            {
                linkUrlTransformer = new CampaignTrackingUrlTransformer(source, medium, campaign, content, regex);
            }

            ((List <HomePageItemViewModel>)model.Items).AddRange(
                publishedContent.Children <IPublishedContent>()
                .Where(child => child.ContentType.Alias == "HomePageItem")
                .Select(child => new HomePageItemViewModelFromUmbraco(child, linkUrlTransformer).BuildModel())
                );
            return(model);
        }
Example #3
0
        /// <summary>
        /// The default action to render the front-end view
        /// </summary>
        /// <param name="model"/>
        /// <returns/>
        public new async Task <ActionResult> Index(RenderModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }
            if (ExamineManager.Instance.SearchProviderCollection["RightsOfWayDepositsSearcher"] == null)
            {
                throw new ConfigurationErrorsException("The RightsOfWayDepositsSearcher is not configured in Examine config");
            }

            var viewModel = new RightsOfWayDepositsViewModelFromExamine(model.Content.Parent.Id, new Uri(model.Content.Parent.UrlAbsolute()), ExamineManager.Instance.SearchProviderCollection["RightsOfWayDepositsSearcher"], Request.QueryString["q"], new ISearchFilter[] { new SearchTermSanitiser() }, Umbraco).BuildModel();

            var rss = new RssViewModel <RightsOfWayDepositViewModel>();

            foreach (var deposit in viewModel.Deposits)
            {
                rss.Items.Add(deposit);
            }

            var expiryDate   = new ExpiryDateFromExamine(model.Content.Id, ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"], new ExpiryDateMemoryCache(TimeSpan.FromHours(1)));
            var modelBuilder = new BaseViewModelBuilder(null);
            await modelBuilder.PopulateBaseViewModel(rss, model.Content, null,
                                                     expiryDate.ExpiryDate,
                                                     UmbracoContext.Current.InPreviewMode);

            if (!String.IsNullOrEmpty(Request.QueryString["q"]))
            {
                rss.Metadata.Title += $" matching '{Request.QueryString["q"]}'";
            }

            new HttpCachingService().SetHttpCacheHeadersFromUmbracoContent(model.Content, UmbracoContext.Current.InPreviewMode, Response.Cache, new[] { expiryDate });

            return(CurrentTemplate(rss));
        }
Example #4
0
        public override ActionResult Index(RssBlock currentBlock)
        {
            var model = new RssViewModel
            {
                Feed = _rssFeedService.ReadFeed("http://feeds.bbci.co.uk/news/rss.xml").ToList()
            };

            return(PartialView(model));
        }
        public RssDetail()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            SizeChanged += OnSizeChanged;

            RssModel = new RssViewModel();
        }
Example #6
0
        public RssDetail()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            RssModel = new RssViewModel();

            ApplicationView.GetForCurrentView().
            SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);
        }
Example #7
0
 // Code to execute when the application is launching (eg, from Start)
 // This code will not execute when the application is reactivated
 private void Application_Launching(object sender, LaunchingEventArgs e)
 {
     Helpers.Agent.Start();
     Deployment.Current.Dispatcher.BeginInvoke(
         () =>
     {
         MainViewModel.LoadCategories();
         RssViewModel.LoadData();
     });
 }
        public async Task <ActionResult> Rss(string service)
        {
            var model = new RssViewModel();

            // Get the data on schools service closures
            var closureData = await LoadClosureData();

            var nav = (closureData as XPathDocument).CreateNavigator();

            nav.MoveToRoot();
            model.ClosureXml = nav.OuterXml;

            model.StylesheetFilename = HostingEnvironment.MapPath("~/App_Data/ClosuresRss.xslt");

            // Configure the XSLT transform.
            // Date in RFC 822 format is for whenever a date is included in RSS data
            // Date in ISO 8601 format us used to filter the closure data which has expired
            model.Parameters.Add("Rfc822Date", DateTime.Now.ToRfc822DateTime());
            model.Parameters.Add("Iso8601Date", DateTime.Now.ToIso8601DateTime());
            model.Parameters.Add("CurrentUrl", PrepareAbsoluteUrl(Request.Url.PathAndQuery).ToString());
            model.Parameters.Add("HtmlXsltUrl", PrepareAbsoluteUrl(Url.Content("~/eastsussexgovuk/rss/rss-to-html.ashx")).ToString());
            model.Parameters.Add("CssUrl", PrepareAbsoluteUrl(Url.Content("~/eastsussexgovuk/rss/rss.css")).ToString());
            model.Parameters.Add("ImageUrl", PrepareAbsoluteUrl(Url.Content("~/eastsussexgovuk/rss/escc-logo-for-feed.gif")).ToString());

            var serviceUrlStart = PrepareAbsoluteUrl(SchoolUrl.FormatSchoolUrl("{0}").ToString()) + ConfigurationManager.AppSettings["RssCampaignTracking"];
            var codeIndex       = serviceUrlStart.IndexOf("{0}", StringComparison.OrdinalIgnoreCase);

            if (codeIndex > -1)
            {
                model.Parameters.Add("ServiceUrlAfterCode", serviceUrlStart.Substring(codeIndex + 3));
                serviceUrlStart = serviceUrlStart.Substring(0, codeIndex);
            }
            model.Parameters.Add("ServiceUrlBeforeCode", serviceUrlStart);

            // If the feed is for a single school, get the URL of the school's page.
            // Otherwise use the school closures page.
            if (!String.IsNullOrEmpty(Request.QueryString["service"]))
            {
                model.Parameters.Add("ServiceCode", Request.QueryString["service"]); // expects school code, for example 8454045;

                model.Parameters.Add("XhtmlVersionUrl", PrepareAbsoluteUrl(SchoolUrl.FormatSchoolUrl(service).ToString()).ToString());
            }
            else
            {
                model.Parameters.Add("XhtmlVersionUrl", PrepareAbsoluteUrl(Url.Content("~/")).ToString());
            }

            return(View(model));
        }
        private void Read(Stream stream, Channel c, RssViewModel m)
        {
            var feedFormatter = new Atom10FeedFormatter();
            var rssFormater = new Rss20FeedFormatter();

            XmlReader atomReader = XmlReader.Create(stream);
            SyndicationFeedFormatter f = null;

            if (feedFormatter.CanRead(atomReader))
            {
                feedFormatter.ReadFrom(atomReader);
                atomReader.Close();
                f = feedFormatter;
            }
            else
                if (rssFormater.CanRead(atomReader))
                {
                    rssFormater.ReadFrom(atomReader);
                    atomReader.Close();
                    f = rssFormater;
                }

            if (f == null) return;

            SyndicationFeed feed = f.Feed;
            c.Title = feed.Title.Text;

            Article[] articles = feed.Items.Select(item => new Article
                {
                    PubDate = item.PublishDate.DateTime,
                    Description = item.Summary.Text,
                    Link = item.Links[0].Uri.OriginalString,
                    Title = item.Title.Text,
                }).Select(art => m.AddArticle(art, c)).ToArray();
            m.DeleteArticle(c.Articles.Where(x => !x.IsStared).Except(articles).ToArray(), c);
            c.LastUpdate = DateTime.Now;
        }
 public ParseRss(RssViewModel model)
 {
     _model = model;
 }
        private void Read(string xml, Channel c, RssViewModel m)
        {
            xml = xml.Replace(RemoveLastBuildDate, String.Empty);

            var b = Encoding.UTF8.GetBytes(xml);

            var settings = new XmlReaderSettings
            {
                ConformanceLevel = ConformanceLevel.Fragment,
                IgnoreWhitespace = true,
                IgnoreComments = true
            };

            var feed = SyndicationFeed.Load(XmlReader.Create(new MemoryStream(b), settings));

            if (feed == null) return;
            c.Title = feed.Title.Text;
            c.Image = feed.ImageUrl.OriginalString;

            var articles = feed.Items.Select(item => new Article
                {
                    PubDate = item.PublishDate.DateTime,
                    AddDate = DateTime.Now,
                    //The reason for the 8,060-byte limit
                    Description = item.Summary.Text.Length < 1000 ? item.Summary.Text : item.Summary.Text.Substring(0, 1000),
                    Link = item.Links[0].Uri.OriginalString,
                    Title = item.Title.Text,
                }).Select(art => m.AddArticle(art, c)).ToArray();

            m.DeleteArticle(c.Articles.Where(x => !x.IsStared).Except(articles).ToArray(), c);
            c.LastUpdate = DateTime.Now;
        }