Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.tcp.httpDeref
on httpDeref (url) { <<Changes <<5/30/08; 10:40:12 AM by DW <<Turn off messages, place the body in a try. <<5/30/08; 10:05:50 AM by DW <<Created for the NewsJunk project, probably useful in other contexts. <<Some sites use redirects in their feeds to allow them to monitor clicks, but I don't like flowing my users through them, so this script checks to see if its a redirect, and returns the page it points to. try { local (urllist = string.urlsplit (url)); local (s = tcp.httpClient (server:urllist [2], path:urllist [3], ctFollowRedirects:0, flMessages:false)); local (code = string.nthField (s, ' ', 2)); if (code == 301) or (code == 302) or (code == 303) { local (t); string.httpResultSplit (s, @t); <<scratchpad.headers = t if defined (t.location) { return (t.location)}}}; return (url)}; bundle { //test code local (url = "http://feeds.feedburner.com/~r/PoliticalWire/~3/301331700/warner_rated_more_favorably_than_gilmore_in_virginia.html"); url = httpDeref (url); webbrowser.openurl (url); dialog.alert (httpDeref (url))}
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.