Catalyst で Atom API テストツール #0

2006/02/16 22:40 追記
なんかツールに名前が欲しいな、ってことで、「A2T2」と名づけました。Atom API Testing Tool の略ってことで。それに合わせて、HTML テンプレートも書き換えてます。あと、My::XML::Atom::Client の方もちょっと書き換え。ベースクラスの XML::Atom::Client の getFeed() では、 Status 200 以外の時に例外処理をしてくれてるのですが、このツールの性質上、例外処理をせずにそのまま結果を渡して欲しいので。


Atom API なサーバを実装するにあたって、以下の様なテストツールが欲しいなぁ、と思った。

で、作ってみた。といってもまだ未完成。今のところ GET リクエストのみ対応。POST, PUT, DELETE はこれから対応します。ソース見たい方は trac からどうぞ。ソース丸ごと欲しい方は、

$ svn co http://svn.mizzy.org/public/atom_client/trunk

とかやっちゃってください。スクリーンショットは下の様な感じ。下の方切れちゃってますが、取得した Atom Feed もちゃんと表示してくれます。(クリックで大きい画像。)

対象となる URI や 実行するメソッド、認証のためのユーザ名やパスワード、POST や PUT の際に必要となる XML データを入力して submit すると、下の方にリクエスト/レスポンスの内容を表示します。せっかく Catalyst 使ってるので、Catalyst::Plugin::Prototype を利用して、画面遷移なしで結果を表示します。

デモをお見せできるといいのですが、うちの 公開サーバである Slackware 環境では XML::LibXML の make が通らないんですよねぇ…なので coLinux 上で動かしているのですが、こっちは外に公開してないので。

重要な処理は宮川さん作の XML::Atom::Client がやってくれるので、こちらで書いたコードはたいしたことないです。少し工夫したのは、XML::Atom::Client の getFeed などでは、取得したフィードが返ってくるだけで HTTP のステータスやヘッダの取得ができなさそうなので、My::XML::Atom::Client というモジュールで XML::Atom::Client を継承して、getFeed メソッドをオーバーライドすることによって、HTTP::Request オブジェクトや HTTP::Reponse オブジェクトを取得できるようにしています。今後 POST, PUT, DELETE に対応していくにあたって、他のメソッドのオーバーライドも必要ですね。

まだ未完成だし、Atom API に関する理解もまだまだなので、「だっせぇ実装。俺ならこうするね。」といったご意見とか頂けるとうれしいっす。

あと、Thanks to オオヒダさん、ってことで、HTML ソース中に名前入れさせて頂きました。いつもランチ誘ってくださってありがとうございます!って、全然このプログラムと関係ないけど。