public void CommonSetCoreChannelPropertiesUsingHelperMethods(Rss20 rss, string optionalTitle = "") { RssChannel chan = rss.channel; string default_title = "TEST CHANNEL CREATED WITH HELPER METHODS"; string title = optionalTitle.Length > 0 ? optionalTitle : default_title; chan.AddTitle(title); chan.AddLink("http://something.com/rss"); chan.AddPubDate(DateTime.Today); chan.AddLastBuildDate(DateTime.Today); chan.AddDescription("This is a channel that is created for sirpenski.syndication.rss20 testing purposes"); chan.AddLanguage("en"); chan.AddCopyright("Copyright " + DateTime.Today.ToString("yyyy") + ". All Rights Reserved"); chan.AddManagingEditor("*****@*****.**"); chan.AddWebMaster("*****@*****.**"); chan.AddCategory("TEST", "http://something.com"); chan.AddCategory("RSS"); chan.AddGenerator("sirpenski.syndication.rss20"); chan.AddDocs("http://something.com/format_of_this_channel"); chan.AddCloud("http://something.com", 11092, "/path/to/service", "notifyChannelUpdate", "xml-rpc"); chan.AddTtl(1440); chan.AddImage("http://something.com/images/rss/rss_channel_logo_88x88.gif", "Channel Icon", "http://something.com", 88, 88); chan.AddSkipHour(1); chan.AddSkipHour(2); chan.AddSkipHour(3); chan.AddSkipDay(RssChannelSkipDays.DAY_SATURDAY); chan.AddSkipDay(RssChannelSkipDays.DAY_SUNDAY); }
public void CommonSetExtendedChannelPropertiesUsingHelperMethods(Rss20 rss) { RssChannel chan = rss.channel; chan.AddAtomLink("http://something.com", "self", "application/rss+xml", chan.title, "en", 102293); chan.AddCreativeCommonsLicense("http://creativecommons.org/useitall"); }
public void CreateChannelWithExtendedPropertiesUsingObjects(Rss20 rss) { // create the channel CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL WITH EXTENDED PROPERTIES USING OBJECTS"); // set using extended properties objects, no media CommonSetExtendedChannelPropertiesUsingObjects(rss); }
public void CreateChannelWithExtendedPropertiesUsingHelperMethods(Rss20 rss) { // create the channel CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL WITH EXTENDED PROPERTIES USING HELPER METHODS"); // set using extended properties helper methods, no media CommonSetExtendedChannelPropertiesUsingHelperMethods(rss); }
public void GeneratRssFeedFiles(IList <ProductVariant> products) { try { var rssFeeds = CreateRssFeeds(products); var path = RssFeedHelper.GetFilePath(""); Directory.CreateDirectory(path); var xmlSettings = new XmlWriterSettings(); xmlSettings.Indent = true; xmlSettings.Encoding = Encoding.UTF8; foreach (var local in _rssFeedSettings.Locales) { var fileName = Path.Combine(path, local.FileName); string fileNameAll = Path.Combine(path, Path.GetFileNameWithoutExtension(local.FileName) + "-all." + Path.GetExtension(local.FileName)); var tt1 = DateTime.Now.Ticks; var feedsAll = rssFeeds[local.LanguageId]; var feedsWithoutCallForPrice = new Rss20() { Version = feedsAll.Version, Channel = new Rss20Channel() { Title = feedsAll.Channel.Title, Link = feedsAll.Channel.Link, Description = feedsAll.Channel.Description, Items = feedsAll.Channel.Items.Where(x => x.CallForPrice == false).ToList(), }, }; XmlSerializer serializer = new XmlSerializer(typeof(Rss20)); var ns = new XmlSerializerNamespaces(); ns.Add("g", RssFeedHelper.GoogleNamespce); using (var stream = XmlWriter.Create(fileNameAll, xmlSettings)) { serializer.Serialize(stream, feedsAll, ns); stream.Close(); _logger.Information($"RssFeed: the file {fileNameAll} has been saved"); } using (var stream = XmlWriter.Create(fileName, xmlSettings)) { serializer.Serialize(stream, feedsWithoutCallForPrice, ns); stream.Close(); _logger.Information($"RssFeed: the file {fileName} has been saved"); } } } catch (Exception ex) { _logger.Error("RssFeed: error occured in generating XML files", ex); throw; } }
public void CreateChannelWithOneCoreItemHelperMethods(Rss20 rss) { // create the channel CommonSetCoreChannelPropertiesUsingHelperMethods(rss, "CREATE CHANNEL WITH ONE ITEM (CORE PROPERTIES ONLY) USING HELPER METHODS"); RssItem itm = new RssItem(); // CommonSetCoreItemPropertiesUsingHelperMethods(itm); rss.channel.AddItem(itm); }
private void CreateChannelWithOneCoreItem(Rss20 rss) { // create the base channel CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL WITH ONE ITEM (CORE PROPERTIES ONLY) USING OBJECTS"); RssItem itm = new RssItem(); // set the core item properties CommonSetCoreItemPropertiesUsingObjects(itm); // add the item to the channel rss.channel.AddItem(itm); }
protected Dictionary <int, Rss20> CreateRssFeeds(IList <ProductVariant> products) { var dic = new Dictionary <int, Rss20>(); if (_rssFeedSettings.Locales.Count == 0) { throw new Exception("The RssFeed plugin is not configured"); } _logger.Information($"RssFeed: Start generating feeds for {products.Count} products"); var t1 = DateTime.Now.Ticks; _urlHelper = null; // reset foreach (var L in _rssFeedSettings.Locales) { CleanInvalidXmlChars(L.Title); CleanInvalidXmlChars(L.Link); CleanInvalidXmlChars(L.Description); var rss = new Rss20(L.Title, L.Link, L.Description); dic[L.LanguageId] = rss; } int cntr = 0; foreach (var p in products) { cntr++; var item = CreateProductRssItems(p, _rssFeedSettings.Locales); if (cntr % 1000 == 0) { _logger.Information($"RssFeed: {cntr} products has been processed so far."); } foreach (var k in item.Keys) { dic[k].Channel.Items.Add(item[k]); } } var t2 = DateTime.Now.Ticks; var time = TimeSpan.FromTicks(t2 - t1); _logger.Information("RssFeed: Rss20 object is created within " + time); return(dic); }
public void CommonSetExtendedChannelPropertiesUsingObjects(Rss20 rss) { RssAtomLink lnk = new RssAtomLink(); lnk.href = "http://something.com"; lnk.hreflang = "en"; lnk.title = rss.channel.title; lnk.type = "application/rss+xml"; lnk.rel = "self"; lnk.length = 102293; rss.channel.AddAtomLink(lnk); RssCreativeCommonsLicense lic = new RssCreativeCommonsLicense(); lic.license = "http://creativecommons.org/useitall"; rss.channel.AddCreativeCommonsLicense(lic); }
public void CreateOneItemWithMediaContentAndMediaOptions(Rss20 rss) { // create the channel CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL WITH EXTENDED PROPERTIES PLUS ONE ITEM WITH EXTENSION AND ONE MEDIA CONTENT ITEM PLUS MEDIA OPTIONS"); // set using extended properties objects, no media CommonSetExtendedChannelPropertiesUsingObjects(rss); // define new item RssItem itm = new RssItem(); // add the core item CommonSetCoreItemPropertiesUsingObjects(itm); // add the extended item objects CommonSetExtendedItemPropertiesUsingObjects(itm); // Create the media content item RssMediaContent mc = new RssMediaContent(); mc.url = "http://something.com/media/movie.mp4"; mc.fileSize = 1000000; mc.type = "video/mp4"; mc.medium = "video"; mc.isDefault = true; mc.expression = "full"; mc.bitrate = 128; mc.frameRate = 30; mc.samplingrate = 44.1; mc.channels = 2; mc.duration = 185; mc.width = 400; mc.height = 200; mc.lang = "en"; CommonSetMediaPropertiesUsingObjects(mc); itm.AddMediaContentItem(mc); // add the item rss.channel.AddItem(itm); }
private void CreateChannelUsingHelperMethods(Rss20 rss) { CommonSetCoreChannelPropertiesUsingHelperMethods(rss, "CREATE CHANNEL (CORE PROPERTIES ONLY) USING HELPER METHODS"); }
private void CreateChannelUsingObjects(Rss20 rss) { CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL (CORE PROPERTIES ONLY) USING OBJECTS"); }
// ***************************************************************************** // TEST CODE BEGINS HERE // ***************************************************************************** #region CommonSetCoreChannelPropertiesUsingObjects public void CommonSetCoreChannelPropertiesUsingObjects(Rss20 rss, string optionalTitle = "") { RssChannel chan = rss.channel; string default_title = "TEST CHANNEL CREATED WITH HELPER METHODS"; string title = optionalTitle.Length > 0 ? optionalTitle : default_title; chan.title = title; chan.link = "http://something.com/rss"; chan.pubDate = DateTime.Now.ToUniversalTime(); chan.lastBuildDate = chan.pubDate; chan.description = "This is a channel that is created for sirpenski.syndication.rss20 testing purposes"; chan.language = "en"; chan.copyright = "Copyright " + DateTime.Today.ToString("yyyy") + ". All Rights Reserved"; chan.managingEditor = "*****@*****.**"; chan.webMaster = "*****@*****.**"; // add categories RssChannelCategory ctg = new RssChannelCategory(); ctg.category = "TEST"; ctg.domain = "http://something.com"; chan.categories.Add(ctg); ctg = new RssChannelCategory(); ctg.category = "RSS"; ctg.domain = ""; chan.categories.Add(ctg); // feed generator chan.generator = "sirpenski.syndication.rss20"; // documentation url that defines spec for this channel chan.docs = "http://something.com/format_of_this_channel"; // cloud RssChannelCloud c = new RssChannelCloud(); c.domain = "http://something.com"; c.path = "/path/to/service"; c.port = 11092; c.protocol = "xml-rpc"; c.registerProcedure = "notifyChannelUpdate"; chan.cloud.Add(c); // time to live chan.ttl = 1440; // channel icon RssChannelImage img = new RssChannelImage(); img.link = "http://something.com/images/rss/rss_channel_logo_88x88.gif"; img.title = "Channel Logo"; img.url = "http://something.com"; img.width = 88; img.height = 88; chan.image = img; // skip hours ie don't look for updates to channel during these hours RssChannelSkipHours skipHours = new RssChannelSkipHours(); skipHours.Hours.Add(1); skipHours.Hours.Add(2); skipHours.Hours.Add(3); chan.skipHours = skipHours; // skip days RssChannelSkipDays skipDays = new RssChannelSkipDays(); skipDays.Days.Add(RssChannelSkipDays.DAY_SATURDAY); skipDays.Days.Add(RssChannelSkipDays.DAY_SUNDAY); chan.skipDays = skipDays; }
/// <summary> /// Creates test feeds /// </summary> /// <param name="TEST_ID"></param> /// <param name="OUTPUT_FORMAT"></param> /// <returns></returns> public IActionResult CreateFeedSubmit(Nullable <int> TEST_ID, Nullable <int> OUTPUT_FORMAT) { IActionResult rslt = new BadRequestResult(); // if id has test value, proceed if (TEST_ID.HasValue) { // get the int int nTestID = Convert.ToInt32(TEST_ID); // get the output value int nOutputFormat = 0; if (OUTPUT_FORMAT.HasValue) { nOutputFormat = Convert.ToInt32(OUTPUT_FORMAT); } // save the session; session.SessionVariables.LastCreateTestID = nTestID; session.SessionVariables.LastCreateOutputFormat = nOutputFormat; session.Save(); // create a new feed Rss20 rss = new Rss20(); // switch the test switch (TEST_ID) { case TEST_CREATE_CHANNEL_USING_OBJECTS: CreateChannelUsingObjects(rss); break; case TEST_CREATE_CHANNEL_USING_HELPER_METHODS: CreateChannelUsingHelperMethods(rss); break; case TEST_CREATE_ONE_CORE_ITEM: CreateChannelWithOneCoreItem(rss); break; case TEST_CREATE_ONE_CORE_ITEM_USING_HELPER_METHODS: CreateChannelWithOneCoreItemHelperMethods(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PROPS_USING_OBJECTS: CreateChannelWithExtendedPropertiesUsingObjects(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PROPS_USING_HELPER_METHODS: CreateChannelWithExtendedPropertiesUsingHelperMethods(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PROPS_MEDIA_USING_OBJECTS: CreateChannelWithExtendedPropertiesAndMediaUsingObjects(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PROPS_MEDIA_USING_HELPER_METHODS: CreateChannelWithExtendedPropertiesAndMediaUsingHelperMethods(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PLUS_ONE_EXT_ITEM_USING_OBJECTS: CreateChannelWithExtendedPropertiesAndOneItemWithExtendedPropertiesNoMediaUsingObjects(rss); break; case TEST_CREATE_CHANNEL_WITH_EXT_PLUS_ONE_EXT_ITEM_WITH_MEDIA_USING_OBJECTS: CreateChannelWithExtendedPropertiesAndOneItemWithExtendedPropertiesAndMediaUsingObjeccts(rss); break; case TEST_CREATE_ONE_ITEM_WITH_MEDIA_CONTENT: CreateOneItemWithMediaContent(rss); break; case TEST_CREATE_ONE_ITEM_WITH_MEDIA_CONTENT_AND_MEDIA_OPTIONS: CreateOneItemWithMediaContentAndMediaOptions(rss); break; case TEST_CREATE_ONE_ITEM_WITH_MEDIA_GROUP: CreateOneItemWithMediaGroup(rss); break; case TEST_CREATE_ONE_ITEM_WITH_MEDIA_GROUP_WITH_MEDIA_OPTIONS: CreateOneItemWithMediaGroupAndMediaOptions(rss); break; } // do the dump switch (nOutputFormat) { case 0: rslt = Content(rss.GetXml(), "application/xml"); break; case 1: string json = JsonConvert.SerializeObject(rss, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); rslt = Content(json, "application/json"); break; } // switch } // end if not string null or empty return(rslt); }
/// <summary> /// ReadFeedSubmit handles the submission /// </summary> /// <param name="COMBOBOX_FEED_URL"></param> /// <param name="OUTPUT_FORMAT"></param> /// <returns></returns> public async Task <IActionResult> ReadFeedSubmit(string COMBOBOX_FEED_URL, Nullable <int> OUTPUT_FORMAT) { IActionResult rslt = new BadRequestResult(); int nOutputFormat = 0; if (OUTPUT_FORMAT.HasValue) { nOutputFormat = Convert.ToInt32(OUTPUT_FORMAT); } if (!string.IsNullOrEmpty(COMBOBOX_FEED_URL)) { string url = COMBOBOX_FEED_URL.Trim(); if (url.Length > 0) { // create a new feed Rss20 rss = new Rss20(); rss.PersistResponseXml = true; rss.SortItemsOnLoad = true; HttpStatusCode r = await rss.LoadUrl(url); // set the session variables session.SessionVariables.LastReadUrl = url; session.SessionVariables.LastReadOutputFormat = nOutputFormat; session.Save(); if (rss.ResponseStatusCode == HttpStatusCode.OK) { switch (nOutputFormat) { case 0: rslt = View("~/Views/Home/ReadFeedDisplay.cshtml", rss); break; case 1: rslt = Content(rss.GetXml(), "application/xml"); break; case 2: rslt = Content(rss.ResponseXml, "application/xml"); break; case 3: rslt = Content(rss.ResponseRawXml, "application/xml"); break; case 4: string json = JsonConvert.SerializeObject(rss, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); rslt = Content(json, "application/json"); break; } // switch } } } return(rslt); }
public void CreateChannelWithExtendedPropertiesAndOneItemWithExtendedPropertiesAndMediaUsingObjeccts(Rss20 rss) { // create the channel CommonSetCoreChannelPropertiesUsingObjects(rss, "CREATE CHANNEL WITH EXTENDED PROPERTIES PLUS ONE ITEM WITH EXTENSION AND MEDIA USING OBJECTS"); // set using extended properties objects, no media CommonSetExtendedChannelPropertiesUsingObjects(rss); // define new item RssItem itm = new RssItem(); // add the core item CommonSetCoreItemPropertiesUsingObjects(itm); // add the extended item objects CommonSetExtendedItemPropertiesUsingObjects(itm); CommonSetMediaPropertiesUsingObjects(itm); // add the item rss.channel.AddItem(itm); }