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.