Re:Long URLs Please
by pmjordan on Tuesday December 23, 2008 @11:09AM
(#407677)
I can understand the Firefox extension as being something laudable, sure. But an HTTP API? That seems kind of random, given that the URL shorteners work with 30x HTTP responses. I mean, you just need to request the short URL and read out the Location header of the 30x response. It seems... convoluted to go via an additional server.
[ Parent
| on HN ]
Re:Long URLs Please
by darraghcurran on Tuesday December 23, 2008 @11:49AM
(#407746)
Good point - what I've done is allow you to piggyback more than one lookup onto a single request. so the plugin will batch them in groups of 4. does that make sense?
Well, on the server you're still starting N requests based on my batch request. I guess combined with caching that can make sense, yes. Even so, I'd probably want to implement my own [1] when setting up my own web app for reliability/trust reasons, and because of same-origin restrictions on client-side scripting. (XHR does support not following redirects, but it's kind of pointless with same-origin policy)
[1] I did exactly that for http://tweetoftheyear.com/ in clojure:
(defn lookup-redirect [url]
(try
(let
[response (http-client/url-do url "HEAD" {:follow-redirect false})]
(when (#{301 302 303 307} (:return-code response))
(first (get (:header response) "Location"))))
(catch java.lang.Throwable t nil)))
Re:Long URLs Please
by darraghcurran on Tuesday December 23, 2008 @12:03PM
(#407772)
I thought so, and I do cache everything nicely in memcache and db.
Also it's hard or maybe even impossible? to reliably fetch arbitrary short url using javascript - exposing it as a simple json api makes this easy.
Yeah, it's only possible on the same hostname as the page you're on, which limits the usefulness and makes the server-side lookup necessary. The JSON solution will only work via a foreign host with a <script> tag as far as I know, which again is something of a trust issue.
Re:Long URLs Please
by darraghcurran on Tuesday December 23, 2008 @12:09PM
(#407779)
nice - I've been meaning to learn a bit of clojure. I hear your point on wanting to set up your own - and as you've shown it is easy to do.