Google URL Shortener APIを使う
使ってみたいって思ったのでコードを書いてみる。
cpanから取れるんだろうけど、仕組みを理解したかったので
自分で書いてみた。
はじめに APIキーを取得します。取得は以下の URLから行えます。
https://code.google.com/apis/console/
次にマニュアルを見ます。
http://code.google.com/intl/ja/apis/urlshortener/v1/getting_started.html
APIキーと短くしたい URLをもつ JSONを POSTすることで、
短縮した URLを取得することができます。レスポンスも JSONです。
コードは以下のとおりです。
#!/usr/bin/env perl use strict; use warnings; # reference http://code.google.com/intl/ja/apis/urlshortener/ use Config::Pit; use JSON::XS; use HTTP::Request; use LWP::UserAgent; my $config = pit_get("goo.gl", require =>{ key => "Google API Key", }); my $long_url = shift or die "Usage $0 url\n"; my $posting_json = encode_json({ key => $config->{key}, longUrl => $long_url, }); my $url = 'https://www.googleapis.com/urlshortener/v1/url'; my $req = HTTP::Request->new('POST', $url); $req->header('Content-Type' => 'application/json'); $req->content($posting_json); my $ua = LWP::UserAgent->new( agent => 'Google URL Shoter', timeout => 10, ); my $res = $ua->request($req); unless ($res->is_success) { die "Error ", $res->status_line; } my $shorten_info = decode_json($res->decoded_content); print "long url : ", $shorten_info->{longUrl}, "\n"; print "short url : ", $shorten_info->{id}, "\n";
実行してみます。
% perl googl.pl http://d.hatena.ne.jp/syohex/ long url : http://d.hatena.ne.jp/syohex/ short url : http://goo.gl/8JLmK
短い方にアクセスした場合にちゃんとオリジナル方のページに
アクセスすることができます。
POSTって具体的にどうやるかってコードを書いたことがなかった
ので知らなかったんですけど、その方法を知ることができました。
HTTP::Requestの使い方も知ることができました。
むしろこっちを知ることができた方がでかいですね。