Monday, April 04, 2011 at 1:05 AM.
river2Suite.initFeed
on initFeed (url) { <<Changes <<3/31/11; 4:48:44 PM by DW <<Init stat that counts the number of 304 codes we've had returned for this feed. <<3/31/11; 1:15:31 PM by DW <<Init a new data table with an initial item, feedtext. <<9/1/09; 11:14:34 AM by DW <<Init ctConsecutiveFeedErrors. <<8/30/09; 5:23:33 PM by DW <<Init stats for read errors. <<8/24/09; 11:34:30 AM by DW <<Init podcast stats. <<8/20/09; 10:52:57 AM by DW <<Init calendar table. <<8/16/09; 6:49:07 PM by DW <<Init adrdata^.lists, to store links to reading lists the feed comes from. Init adrdata^.prefs.flNonListSubscribe, if true, the feed was subscribed on its own, without being part of a reading list. This means it cannot be deleted if its last reading list reference is deleted. <<8/16/09; 9:19:42 AM by DW <<Init adrdata^.stats.ctCloudRenewErrors. <<8/15/09; 7:20:22 PM by DW <<Init adrdata^.prefs.ctSecsBetwRenews. For testing we may need to try to renew more often that once every 24 hours. Or in some circumstances we may want to renew less often. This allows a variance on a per-feed basis. <<7/25/09; 10:32:35 AM by DW <<Init stats.ctCloudRenew. <<7/17/09; 1:26:56 PM by DW <<Init stats.whenLastCloudRenew. <<6/16/09; 10:48:23 AM by DW <<Created. local (adrdata = river2suite.init ()); adrdata = @adrdata^.feeds.[url]; if not defined (adrdata^) { new (tabletype, adrdata)}; bundle { //prefs if not defined (adrdata^.prefs) { new (tabletype, @adrdata^.prefs)}; if not defined (adrdata^.prefs.enabled) { adrdata^.prefs.enabled = true}; if not defined (adrdata^.prefs.ctSecsBetwRenews) { //8/15/09 by DW adrdata^.prefs.ctSecsBetwRenews = 24 * 60 * 60}; //24 hours if not defined (adrdata^.prefs.flNonListSubscribe) { //8/16/09 by DW adrdata^.prefs.flNonListSubscribe = false}}; bundle { //data, 3/31/11 by DW if not defined (adrdata^.data) { new (tabletype, @adrdata^.data)}; if not defined (adrdata^.data.feedtext) { adrdata^.data.feedtext = ""}}; bundle { //stats if not defined (adrdata^.stats) { new (tabletype, @adrdata^.stats)}; if not defined (adrdata^.stats.ctReads) { adrdata^.stats.ctReads = 0}; if not defined (adrdata^.stats.ctReadErrors) { //8/30/09 by DW adrdata^.stats.ctReadErrors = 0}; if not defined (adrdata^.stats.ctConsecutiveReadErrors) { //9/1/09 by DW adrdata^.stats.ctConsecutiveReadErrors = 0}; if not defined (adrdata^.stats.whenLastReadError) { //8/30/09 by DW adrdata^.stats.whenLastReadError = date (0)}; if not defined (adrdata^.stats.lastReadError) { //8/30/09 by DW adrdata^.stats.lastReadError = ""}; if not defined (adrdata^.stats.ctItems) { adrdata^.stats.ctItems = 0}; if not defined (adrdata^.stats.ctEnclosures) { adrdata^.stats.ctEnclosures = 0}; if not defined (adrdata^.stats.whenLastRead) { adrdata^.stats.whenLastRead = date (0)}; if not defined (adrdata^.stats.whenLastNewItem) { adrdata^.stats.whenLastNewItem = date (0)}; if not defined (adrdata^.stats.whenSubscribed) { adrdata^.stats.whenSubscribed = timecreated (adrdata)}; if not defined (adrdata^.stats.whenLastCloudRenew) { //7/17/09 by DW adrdata^.stats.whenLastCloudRenew = date (0)}; if not defined (adrdata^.stats.ctCloudRenew) { //7/25/09 by DW adrdata^.stats.ctCloudRenew = 0}; if not defined (adrdata^.stats.ctCloudRenewErrors) { //8/16/09 by DW adrdata^.stats.ctCloudRenewErrors = 0}; if not defined (adrdata^.stats.ctPodcastDownloads) { //8/22/09 by DW adrdata^.stats.ctPodcastDownloads = 0}; if not defined (adrdata^.stats.ctFeedTextChanges) { //3/31/11 by DW adrdata^.stats.ctFeedTextChanges = 0}; if not defined (adrdata^.stats.ct304s) { //3/31/11 by DW adrdata^.stats.ct304s = 0}}; bundle { //feedInfo if not defined (adrdata^.feedInfo) { new (tabletype, @adrdata^.feedInfo)}; if not defined (adrdata^.feedInfo.title) { adrdata^.feedInfo.title = ""}; if not defined (adrdata^.feedInfo.link) { adrdata^.feedInfo.link = ""}; if not defined (adrdata^.feedInfo.description) { adrdata^.feedInfo.description = ""}}; if not defined (adrdata^.history) { new (tabletype, @adrdata^.history)}; if not defined (adrdata^.lists) { //8/16/09 by DW new (tabletype, @adrdata^.lists)}; if not defined (adrdata^.calendar) { //8/20/09 by DW new (tabletype, @adrdata^.calendar)}; return (adrdata)}; bundle { //test code initFeed ("http://scripting.com/rss.xml")}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.