最近bit.lyのAPIを使うことがあって、それをうまく扱うようなcpanモジュールを探していたら、WWW:Shorten::Bitlyというモジュールが見つかった。ただ、このモジュールでは自分のやりたかった事が出来なかったので*1、もう少し汎用的なモジュールを作ってみました。
機能
bit.lyのAPIの
- shorten
- expand
- validate
- clicks
- bitly_pro_domain
- lookup
- authenticate
- info
をperlから扱う事が出来ます。つまり、URLを短くしたり、短いURLを長くしたり、クリック数の統計をとったりなどの機能を使う事が出来ます。。
利用例
use WebService::Bitly; #インスタンス生成 my $bitly = WebService::Bitly->new( user_name => 'shibayu', user_api_key => 'R_1234567890abcdefg', ); #shorten my $result_shorten = $bitly->shorten('http://example.com/'); if ($result_shorten->is_error) { warn $result_shorten->status_code; warn $result_shorten->status_txt; } else { my $short_url = $result_shorten->short_url; } #expand my $expand = $bitly->expand( short_urls => ['http://bit.ly/abcdef', 'http://bit.ly/fedcba'], hashes => ['123456', '654321'], ); if (!$expand->is_error) { for $result ($expand->results) { print $result->long_url if !$result->is_error; } }
repository
githubに置いてあります。
http://github.com/shibayu36/WebService-Bitly
まとめ
今回初めてこのようなモジュールを作成してみて、汎用的になるよう作るのはやはり難しいという印象を受けました。perlのプログラマの方に聞きつつ、試行錯誤を繰り返し、ある程度完成というところまで到達できました。非常に勉強になったので、これからもモジュール作成をできるだけ行なっていきたいと思います。
ただ、まだperlを始めたばかりということもあり、こんな設計でいいのだろうかと思う部分が多々あります。もし、「この書き方より、こっちの書き方の方がいい」という意見があったら、指摘していただきたいです。自分の書いたプログラムを添削してもらえたりするWebサービスとかってあるのかな。
現在PAUSEアカウントの登録中なので、登録完了したらCPANに上げてみたいなと思っています。登録申請してから四日間ぐらい何も音沙汰ないけど、もう一度登録申請した方がいいかなー。