Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.weblog.getRssUrl
on getRssUrl (adrblog) { <<2/17/01; 6:02:53 PM by JES <<Get the URL of a blog's RSS file, given the address of its table. <<Here's the order of precedence: <<1- The FTP version <<2- The Manila version <<3- The version in the cloud <<4- The locally served version <<Changes: <<2/19/01 at 1:06:47 AM by JES <<Generate the proper URL even if the home page filename is specified at adrprefs^.ftp.url, and not just the directory. local (adrprefs = @adrblog^.prefs); local (url); <<bundle //old code <<if adrprefs^.ftp.enabled <<local (path = adrprefs^.rssFilePath) <<local (filename = string.nthField (path, '/', string.countFields (path, '/'))) <<url = adrprefs^.ftp.url <<if not (url endsWith "/") <<url = string.mid (url, 1, sizeOf (url) - sizeOf (string.nthField (url, "/", string.countFields (url, "/")))) <<url = url + filename <<return (url) <<if adrprefs^.manila.enabled <<url = adrprefs^.manila.url <<if not (url endsWith "/") <<url = url + "/" <<url = url + "xml/rss.xml" <<return (url) <<if user.playlist.data.upstream.enabled <<local (pc = file.getPathChar ()) <<local (path = adrprefs^.rssFilePath) <<if path beginsWith "/" <<path = string.mid (path, 2, infinity) <<path = string.replaceAll (path, "/", pc) <<if defined (user.playlist.data.upstream.files.[path]) <<if defined (user.playlist.data.upstream.files.[path].url) <<return (user.playlist.data.upstream.files.[path].url) local (pc = file.getPathChar ()); local (relPath = string.popLeading (adrprefs^.rssFilePath, '/')); local (f = user.radio.prefs.wwwfolder + string.replaceAll (relPath, '/', pc)); if file.exists (f) { local (adrfile); radio.file.getFileAttributes (f, @adrfile); local (adrspec); if radio.upstream.getUpstreamSpec (adrfile, @adrspec) { if adrfile^.upstream.url != "" { return (adrfile^.upstream.url)}}}; url = "/" + relPath; if not (url beginswith "/") { url = "/" + url}; local (ip = tcp.dns.getMyDottedId ()); local (port = user.inetd.config.http.port); if port == 80 { port = ""} else { port = ":" + port}; url = "http://" + ip + port + url; return (url)} <<bundle //debugging <<radio.weblog.getRssUrl (radio.weblog.init ())
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.