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

system.verbs.builtins.radio.upstream.builtinDrivers.ftp.deleteMultipleFiles

on deleteMultipleFiles (fileslist, adrspec, adrresponse) {
	<<Changes
		<<1/31/02; 2:44:36 AM by JES
			<<Added support for deleting directories.
		<<12/13/01; 12:33:26 PM by JES
			<<We now have a tcp.delete verb, so we can delete files on an FTP server.
	with adrspec^ {
		bundle { //set up response table
			new (tabletype, adrresponse);
			adrresponse^.errorlist = {};
			adrresponse^.flerror = false;
			adrresponse^.message = ""};
		local (password = string (user.radio.prefs.passwords.[passwordname]));
		msg ("FTP upstream driver: Opening connection.");
		local (adrconnection = tcp.ftp.openConnection (server, username, password, false));
		local (adrfile);
		for adrfile in fileslist {
			local (f = nameof (adrfile^));
			local (relativePath = adrfile^.relativePath);
			local (filepath);
			bundle { //set filepath
				filepath = path;
				if not (filepath endswith "/") {
					filepath = filepath + "/"};
				bundle { //hack up the path, sometimes the extension was changed as it was upstreamed
					local (url = adrfile^.upstream.url);
					local (renderedFileExtension = string.nthfield (url, ".", string.countfields (url, ".")));
					relativePath = string.popSuffix (relativePath) + "." + renderedFileExtension};
				filepath = filepath + relativePath};
			msg ("FTP upstream driver: Deleting \"" + relativePath + "\".");
			try {
				if filepath endsWith "/" {
					tcp.ftp.removeDirectory (adrconnection, filepath)}
				else {
					tcp.ftp.delete (adrconnection, filepath)};
				adrresponse^.errorlist = adrresponse^.errorlist + {""}}
			else {
				adrresponse^.errorlist = adrresponse^.errorlist + {tryError};
				adrresponse^.flerror = true}};
		msg ("FTP upstream driver: Closing connection.");
		tcp.ftp.closeConnection (adrconnection);
		msg ("")}}



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.