Monday, November 08, 2010 at 12:00 AM.

river2Suite.renewOneSubscription

on renewOneSubscription (adrfeed, adrhtmltext=nil) {
	<<Changes
		<<9/17/09; 7:34:43 AM by DW
			<<Created. Why didn't I factor this out a long time ago? Would have helped with testing.
	local (startticksthisrenew = clock.ticks (), urlfeed = nameof (adrfeed^), now = clock.now ());
	local (linkfeed = "<a href=\"" + urlfeed + "\">" + adrfeed^.feedinfo.title + "</a>");
	with adrfeed^.feedinfo.cloud {
		try {
			if protocol == "xml-rpc" {
				local (server = "xmlrpc://" + domain + ":" + port + path);
				[server].[registerProcedure] ("river2.feedUpdated", 5337, "/RPC2", "xml-rpc", {urlfeed})}
				<<local (params = {"river2.feedUpdated", 5337, "/RPC2", "xml-rpc", {urlfeed}})
				<<betty.rpc.client (domain, port, registerProcedure, @params, rpcPath: path)
			else {
				if protocol == "http-post" { //7/21/09 by DW
					bundle { //request notification via to http-post, 9/7/09 by DW
						local (apiurl = "http://" + domain + ":" + port + path, params);
						new (tabletype, @params);
						params.notifyProcedure = "";
						params.port = 5337;
						params.path = "/river2/notify";
						params.protocol = "http-post";
						params.url1 = urlfeed;
						local (xmltext = tcp.httppost (apiurl, @params), xstruct);
						xml.compile (xmltext, @xstruct);
						local (adrnotifyresult = xml.getaddress (@xstruct, "notifyResult"));
						local (flsuccess = xml.getattributevalue (adrnotifyresult, "success"));
						if not flsuccess {
							scripterror (xml.getattributevalue (adrnotifyresult, "msg"))}}}};
					<<bundle //old code -- request notification via XML-RPC, switch to http-post, 9/7/09 by DW
						<<local (apiurl = "http://" + domain + ":" + port + path, params)
						<<new (tabletype, @params)
						<<params.notifyProcedure = "river2.feedUpdated"
						<<params.port = 5337
						<<params.path = "/RPC2"
						<<params.protocol = "xml-rpc"
						<<params.url1 = urlfeed
						<<local (xmltext = tcp.httppost (apiurl, @params), xstruct)
						<<xml.compile (xmltext, @xstruct)
						<<local (adrnotifyresult = xml.getaddress (@xstruct, "notifyResult"))
						<<local (flsuccess = xml.getattributevalue (adrnotifyresult, "success"))
						<<if not flsuccess
							<<scripterror (xml.getattributevalue (adrnotifyresult, "msg"))
			<<if protocol == "soap"
				<<local (params = {"channelChanged", user.inetd.config.http.port, "/aggregator", "soap", {urlfeed}})
				<<soap.rpc.client (path, registerProcedure, @params, domain, port)
			if adrhtmltext != nil {
				adrhtmltext^ = adrhtmltext^ + linkfeed + ", "}}
		else {
			adrfeed^.stats.lastCloudRenewError = tryerror; //7/19/09 by DW
			adrfeed^.stats.ctCloudRenewErrors++; //8/16/09 by DW
			log2.add (river2Info.name, "Notify", "Error renewing " + linkfeed + ": \"" + tryerror + ".\"", startticksthisrenew)}};
	adrfeed^.stats.whenLastCloudRenew = now;
	adrfeed^.stats.ctCloudRenew++};
bundle { //test code
	renewOneSubscription (@config.river2.feeds.["http://www.inberkeley.com/feed/"])}



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.