連載 [第5回] :
PerlでWeb APIを使いたおすAtomPP を利用したWeb API
2006年10月12日(木)
AtomPPをPerlから使う
それでは実際にAtomPPを利用したプログラムを書いてみることにしましょう。PerlにはXML::AtomというAtomPPやAtom Feedを扱うモジュールがあるので、こちらを利用します。
題材としては、はてなブックマーク(注3)を利用してみます。はてなブックマークはソーシャルブックマークサービスで、ブックマークの登録や取得、編集をAtomPPで行うことができます。
今回は自分のブックマークに新規のエントリを登録するプログラムを書いてみました(リスト18)。
リスト18:はてなブックマークにポストする
#!/usr/bin/perl
use strict;
use warnings;
use XML::Atom::Client;
use XML::Atom::Entry;
use XML::Atom::Link;
my $api = XML::Atom::Client->new;
$api->username('ユーザー名');
$api->password('パスワード');
my $collection_uri = 'http://b.hatena.ne.jp/atom/post';
my $uri = '登録するエントリのURI';
my $comment = 'コメント';
my $link = XML::Atom::Link->new;
$link->type('text/html');
$link->rel('related');
$link->href($uri);
my $entry = XML::Atom::Entry->new;
$entry->add_link($link);
$entry->add(undef,'summary',$comment,{type => 'text/plain'});
my $member_uri = $api->createEntry($collection_uri, $entry);
my $posted_entry = $api->getEntry($member_uri);
print $posted_entry->as_xml;
処理としては簡単で、XML::Atom::Entryのインスタンスとして登録情報を作成し、それをXML::Atom::Clientを使って登録(新規エントリの作成)しているだけです。はてなブックマークのAPIでは、登録するエントリのURIはlink要素として指定するので、XML::Atom::Entryを使って生成し、それをエントリオブジェクトに加えています。コメントはsummary要素として渡します。
実際に追加する作業は、XML::Atom::ClientクラスのcreateEntryメソッドに追加先のCollectionのURI(PostURI)とエントリを渡せば完了です。登録の際に送られるEntryのデータは次ページのリスト19のようなものです。
リスト19:POSTされるエントリ情報
エントリを追加すると、レスポンスとして、追加されたMemberのURIが返されます。そこで、今度はそのURIに対してGETメソッドでアクセスして(getEntryを利用)、エントリの内容を取得します。内容はXML::Atom::Entryとして返されるので、最後にそれをXMLのまま表示しています。その内容は、次ページのリスト20のようなものになっているはずです。
リスト20:取得したエントリ情報
ちなみに、はてなブックマークではユーザー認証にWSSE認証という仕組みを利用していますが、XML::Atomにはその仕組みが用意されているので、特に気にすることなく利用できます。
はてなブックマークのAtomPP APIの仕様については以下のドキュメントを参照してください。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。