November 27, 2004

Net::Amazon ですべての Catalog でレビューを取得

[ Perl ]

いまさらですがNet::Amazonを使って AWS3 から情報を取得する場合に、Catalog が Book、DVD、Music 以外の場合、レビューが取得できないことに気づく。

ということで Hack。Net::Amazon::Property が対象。

--- Property.pm.orig    2004-11-26 15:46:53.000000000 +0900
+++ Property.pm 2004-11-26 16:02:44.000000000 +0900
@@ -115,6 +115,7 @@
     } else {
         DEBUG("Creating new Default Property ($catalog)");
         $obj = Net::Amazon::Property->new(xmlref => $xmlref);
+        $obj->init_via_xmlref($options{xmlref});
     }

Net::Amazon::Property は Factory パターンになっていて、その Factory が生成するインスタンスに Net::Amazon::Property::Book/Music/DVD の三種類のサブクラスがあります。AWS の Category をみて適切なインスタンスを生成する Factory ですが、Book/Music/DVD以外の Property はデフォルトのインスタンスとして Net::Amazon::Property そのものを返します。このときデフォルトの場合はレビューのデータをオブジェクトにセットする init_via_xmlref() を通らず、レビューに関するデータが取得できないという不具合。

そこで、デフォルトの場合でも init_via_xmlref() を実行するように修正。結局のところ、init_via_xmlref() は Net::Amazon::Property クラスがインスタンス化される場合は必ず呼び出すこととなりこの辺りは若干設計ミスな感が漂ってます。若干 ad-hoc な対処になってしまったかな。

とりあえずパッチを送りました。

Posted by naoya at November 27, 2004 12:14 AM | トラックバック (0)  b_entry.gif
トラックバック [0件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/1349
コメント [0件]
コメントする









名前、アドレスを登録しますか?