public void RssXmlHelperDeserializeFromXmlUsingStringReaderTest() { RssDocument rss = RssXmlHelper.DeserializeFromXmlUsingStringReader <RssDocument>(rssXml); Assert.IsTrue(rss.Channel.Items.Count == 1, "RssToolkit.RssRssXmlHelper.DeserializeFromXmlUsingStringReader did not return the expected value."); Assert.IsTrue(rss.Channel.Title == "Yahoo! News: Top Stories", "RssToolkit.Rss.RssXmlHelper.DeserializeFromXmlUsingStringReader did not return the expected value."); }
/// <summary> /// Generates the channel items. /// </summary> /// <param name="rssChannel">The RSS channel.</param> /// <returns></returns> private string GenerateChannelItems(RssChannel rssChannel) { if (this.Parameters.ClassName.StartsWith("List_")) { return(GenerateListChannelItems(rssChannel)); } return(RssXmlHelper.ToRfc822(DateTime.Now)); }
public void RssXmlHelperConvertToRssTest() { RssDocument rss = RssDocument.Load(RssXmlHelper.ConvertToRssXml(RssUtility.AtomXml)); Assert.IsTrue(rss.Channel.Items.Count > 0); rss = RssDocument.Load(RssXmlHelper.ConvertToRssXml(RssUtility.RdfXml)); Assert.IsTrue(rss.Channel.Items.Count > 0); }
public void RssXmlHelperToRssXmlTest() { string rssUrl = "http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml"; RssDocument rss = RssDocument.Load(new System.Uri(rssUrl)); string xml = RssXmlHelper.ToRssXml <RssDocument>(rss); Assert.IsFalse(string.IsNullOrEmpty(xml), "RssToolkit.Rss.RssXmlHelper.ToRssXml did not return the expected value."); System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument(); xmlDocument.LoadXml(xml); Assert.IsTrue(xmlDocument.DocumentElement.LocalName.Equals("rss", StringComparison.OrdinalIgnoreCase), "RssToolkit.Rss.RssXmlHelper.ToRssXml did not return the expected value."); Assert.IsTrue(xmlDocument.SelectNodes("/rss/channel/item").Count > 0, "RssToolkit.Rss.RssXmlHelper.ToRssXml did not return the expected value."); }
/// <summary> /// Generates the list channel items. /// </summary> /// <param name="rssChannel">The RSS channel.</param> /// <returns></returns> private string GenerateListChannelItems(RssChannel rssChannel) { DateTime lastBuildDate = DateTime.MinValue; MetaClass listMetaClass = DataContext.Current.GetMetaClass(this.Parameters.ClassName); foreach (EntityObject item in BusinessManager.List(this.Parameters.ClassName, this.CurrentProfile.Filters.ToArray(), this.CurrentProfile.Sorting.ToArray())) { RssItem rssItem = new RssItem(); rssItem.Guid = new RssGuid(); rssItem.Title = string.IsNullOrEmpty(listMetaClass.TitleFieldName) ? ("#" + item.PrimaryKeyId.Value.ToString()) : (string)item[listMetaClass.TitleFieldName]; rssItem.Link = MakeFullLink(this.Page.ResolveUrl(string.Format(CultureInfo.CurrentUICulture, "~/Apps/MetaUIEntity/Pages/EntityList.aspx?ClassName={0}", listMetaClass.Name))); rssItem.Guid.IsPermaLink = "false"; rssItem.Guid.Text = item.PrimaryKeyId.Value.ToString(); rssItem.Description = RenderListEntityObjectDescription(listMetaClass, item); DateTime modified = (DateTime)item["Modified"]; if (modified > lastBuildDate) { lastBuildDate = modified; } rssItem.PubDate = RssXmlHelper.ToRfc822(modified); UserLight author = UserLight.Load((int)item["ModifierId"]); if (author != null) { rssItem.Author = string.Format("{0} <{1}>", author.DisplayName, author.Email); } rssChannel.Items.Add(rssItem); } if (lastBuildDate == DateTime.MinValue) { lastBuildDate = DateTime.Now; } return(RssXmlHelper.ToRfc822(lastBuildDate)); }
public override void GenerateCode(AssemblyBuilder assemblyBuilder) { if (assemblyBuilder == null) { throw new ArgumentNullException("assemblyBuilder"); } // load as XML XmlDocument doc = new XmlDocument(); using (Stream s = OpenStream(VirtualPath)) { doc.Load(s); } // validate root rssdl node XmlNode root = doc.DocumentElement; if (root.Name != "rssdl") { throw new InvalidDataException(string.Format(CultureInfo.InvariantCulture, "Unexpected root node '{0}' -- expected root 'rssdl' node", root.Name)); } // iterate through rss nodes for (XmlNode n = root.FirstChild; n != null; n = n.NextSibling) { if (n.NodeType != XmlNodeType.Element) { continue; } if (n.Name != "rss") { throw new InvalidDataException( string.Format( CultureInfo.InvariantCulture, "Unexpected node '{0}' -- expected root 'rss' node", root.Name)); } string file = string.Empty; string url = string.Empty; string classNamePrefix = string.Empty; string namespaceName = string.Empty; foreach (XmlAttribute attr in n.Attributes) { switch (attr.Name) { case "name": classNamePrefix = attr.Value; break; case "url": url = attr.Value; break; case "file": file = VirtualPathUtility.Combine(VirtualPathUtility.GetDirectory(VirtualPath), attr.Value); break; case "namespace": namespaceName = attr.Value; break; default: throw new InvalidDataException( string.Format(CultureInfo.InvariantCulture, "Unexpected attribute '{0}'", attr.Name)); } } if (string.IsNullOrEmpty(classNamePrefix)) { throw new InvalidDataException("Missing 'name' attribute"); } if (string.IsNullOrEmpty(url) && string.IsNullOrEmpty(file)) { throw new InvalidDataException("Missing 'url' or 'file' attribute - one must be specified"); } if (!string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(file)) { throw new InvalidDataException("Only one of 'file' and 'url' can be specified"); } // compile channel CodeCompileUnit ccu = new CodeCompileUnit(); if (!string.IsNullOrEmpty(url)) { // load RssDocument using (Stream feedStream = DownloadManager.GetFeed(url)) { using (XmlTextReader reader = new XmlTextReader(feedStream)) { string codeString = RssXmlHelper.ConvertToRssXml(reader); RssCodeGenerator.GenerateCodeDomTree(codeString, url, namespaceName, classNamePrefix, ccu, true); } } } else { using (XmlTextReader reader = new XmlTextReader(file)) { string codeString = RssXmlHelper.ConvertToRssXml(reader); RssCodeGenerator.GenerateCodeDomTree(codeString, url, namespaceName, classNamePrefix, ccu, true); } } assemblyBuilder.AddCodeCompileUnit(this, ccu); } }
protected override void PopulateRss(string channelName, string userName) { // Get the data string qModuleId = HttpContext.Current.Request["moduleId"]; int moduleId; if (!int.TryParse(qModuleId, out moduleId) || moduleId <= 0) { throw new ArgumentException("Invalid or missing module id: " + moduleId); } WebModuleInfo MasterDetailListModule = WebModule.GetModule(moduleId); if (MasterDetailListModule.WebModuleType != MasterDetailList.ModuleType) { throw new ArgumentException(string.Format("Invalid module type '{0}'. Module type must be '{1}'", MasterDetailListModule.ModuleTypeName, MasterDetailList.ModuleType.Name)); } WebpageInfo MasterDetailListPage = MasterDetailListModule.Webpage; if (null == MasterDetailListModule) { throw new ArgumentException("Invalid module id: " + moduleId); } List <WebModuleInfo> MasterDetailItemModules = MasterDetailList.GetMasterDetailChildren(moduleId, true, true); // Build the feed Rss.Channel = new MasterDetailChannel(); Rss.Version = "2.0"; Rss.Channel.Title = MasterDetailListPage.Title; Rss.Channel.Description = MasterDetailListPage.MetaDescription; Rss.Channel.Link = MasterDetailListPage.Path; Rss.Channel.Items = new List <MasterDetailRssItem>(); if (!string.IsNullOrEmpty(channelName)) { Rss.Channel.Title += " '" + channelName + "'"; } if (!string.IsNullOrEmpty(userName)) { Rss.Channel.Title += " (generated for " + userName + ")"; } int maxItemsPerPage = 25; int i = 0; foreach (WebModuleInfo m in MasterDetailItemModules) { WebpageInfo p = m.Webpage; MasterDetailItem itemRes = MasterDetailItem.GetSafeResource(m.Id); //string postDateString = ""; //if (p.PostDate.HasValue) //{ //this is a hack // postDateString = p.PostDate.Value.GetDateTimeFormats( // System.Globalization.CultureInfo.GetCultureInfo("en-US"))[103]; //} MasterDetailRssItem item = new MasterDetailRssItem(); item.Title = p.Title; item.Description = itemRes.GetSummary(p); if (p.PostDate.HasValue) { item.PubDate = RssXmlHelper.ToRfc822(p.PostDate.Value); } item.Link = VirtualPathUtility.ToAbsolute(p.Path); Rss.Channel.Items.Add(item); i++; if (i == maxItemsPerPage) { break; } } }