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.