public string GenerateRss(string baseurl) { RssDocument r = new RssDocument(); RssChannel c = new RssChannel(); c.Items = new List <RssItem>(); foreach (WritaPost p in _dbhelper.GetPosts()) { c.Items.Add(new RssItem() { Link = baseurl + "/" + p.PostSlug, Title = p.PostTitle, Description = p.PostSummary }); } r.Channel = c; r.Version = "2.0"; string doc = r.ToXml(DocumentType.Atom); XmlDocument document = new XmlDocument(); document.LoadXml(doc); //context.Response.ContentType = "text/xml"; document.Save(HttpContext.Current.Server.MapPath("~/atom.rss")); return(doc); }
public async Task <IActionResult> GetRssFeed() { var key = "rss"; var xml = _cache.Get(key)?.ToString(); if (string.IsNullOrEmpty(xml)) { int?categoryId = null; var pagedResult = await _publicationManager.GetPublications(categoryId, 1, 50); var lastUpdateDate = pagedResult.Select(o => o.DateTime).DefaultIfEmpty().Max(); var rss = new RssDocument { Channel = new RssChannel { Copyright = _settings.WebSiteTitle, Description = _settings.DefaultDescription, SkipDays = new List <Day>(), SkipHours = new List <Hour>(), AtomLink = new RssLink(_settings.RssFeedUrl), Image = new RssImage { Description = _settings.WebSiteTitle, Height = 100, Width = 100, Link = new RssUrl(_settings.FacebookImage), Title = _settings.WebSiteTitle, Url = new RssUrl(_settings.FacebookImage) }, Language = new CultureInfo("ru"), LastBuildDate = lastUpdateDate, Link = new RssUrl(_settings.RssFeedUrl), ManagingEditor = new RssPerson("Andrew G.", _settings.SupportEmail), PubDate = lastUpdateDate, Title = _settings.WebSiteTitle, TTL = 10, WebMaster = new RssPerson("Andrew G.", _settings.SupportEmail), Items = new List <RssItem> { } } }; foreach (var p in pagedResult) { rss.Channel.Items.Add(CreateRssItem(p)); } xml = rss.ToXml(); _cache.Set(key, xml, TimeSpan.FromMinutes(10)); } return(Content(xml, RssDocument.MimeType)); }
public void RssDocumentToXmlTest() { RssDocument rss = RssUtility.GetRssDocumentFromUrl(); string xml = rss.ToXml(DocumentType.Rss); XmlDocument doc = new XmlDocument(); doc.LoadXml(xml); Assert.IsTrue(doc.SelectNodes("/rss/channel/item").Count > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/rss/channel/title").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/rss/channel/item/title").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); xml = rss.ToXml(DocumentType.Atom); doc.LoadXml(xml); Assert.IsTrue(doc.SelectNodes("/feed/entry").Count > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/feed/title").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/feed/entry/summary").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); xml = rss.ToXml(DocumentType.Rdf); doc.LoadXml(xml); Assert.IsTrue(doc.SelectNodes("/rdf/item").Count > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/rdf/channel/title").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); Assert.IsTrue(doc.SelectSingleNode("/rdf/item/title").InnerText.Length > 0, "RssToolkit.Rss.RssDocument.ToXml did not return the expected value."); }
/// <summary> /// Generates the specified param. /// </summary> /// <returns></returns> public string Generate() { ResolveListViewProfile(); RssDocument rssDocument = new RssDocument(); rssDocument.Version = "2.0"; rssDocument.Channel = new RssChannel(); rssDocument.Channel.Image = new RssImage(); GenerateChannelInformation(rssDocument.Channel); rssDocument.Channel.Copyright = IbnConst.AssemblyCopyright; rssDocument.Channel.Generator = IbnConst.AssemblyCompany + "RSS Generator"; rssDocument.Channel.WebMaster = ""; rssDocument.Channel.Image.Link = MakeFullLink(this.Page.ResolveUrl("~/")); rssDocument.Channel.Image.Title = IbnConst.ProductName; rssDocument.Channel.TimeToLive = "30"; rssDocument.Channel.Items = new List <RssItem>(); rssDocument.Channel.LastBuildDate = GenerateChannelItems(rssDocument.Channel); //dvs[2009-05-28]: fix bug with ie (set encoding to utf-8) XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(rssDocument.ToXml(DocumentType.Rss)); if (xmlDoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration) { XmlDeclaration xmlDeclaration = (XmlDeclaration)xmlDoc.FirstChild; xmlDeclaration.Encoding = "utf-8"; } StringWriter sw = new StringWriter(); XmlTextWriter xw = new XmlTextWriter(sw); xmlDoc.WriteTo(xw); return(sw.ToString()); }