Rubyで短縮URLを展開
hugeurl
既存のものがないか探してみるとhugeurlというgemがあった。
しかし中身をちょっとのぞいてみるとTwitterのhugeurlを使っているところがなんだか微妙だ。
しかもhugeurl自体が使えなくなってるくさい?APIドキュメントにも載ってないしアクセスするとNot Foundだし。
Locationヘッダから取得する
短縮URLに問い合わせてリダイレクト先をLocationから取るというのは分かりやすい。
エラー処理を軽く追加すれば汎用的に使えて良さそうだ。
更に汎用的なもの
moski/url_expanderというgemは以下のような短縮URLにも対応している。
- ネストされた短縮URL
- HTMLのメタタグでリダイレクトする短縮URL
ネストされた短縮URLはbit.lyのURLが更にt.coで短縮されている、みたいなもの。これを追いかけて展開するかしないかをオプションで指定できるようになっている。
「HTMLのメタタグでリダイレクトする短縮URL」とは、短縮URLを踏むとリダイレクトサービスのページが表示されて、そこからHTMLのメタタグで本来のURLにリダイレクトする形式のもの。そんなものもあるのだね。
といったかんじで、よりきめ細かく対応してくれるわけだが、該当するクラスのないURL短縮サービスに対してはエラーを返すので新しいサービスが出て来たら都度クラスを追加していかなくてはいけない。
しかし短縮URLサービスも多いね。