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); }
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); }
/// <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)); }
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(); }
public RssDetail() { this.InitializeComponent(); _navigationHelper = new NavigationHelper(this); RssModel = new RssViewModel(); ApplicationView.GetForCurrentView(). SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible); }
// 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; }