rapa v0.4.0...v0.5.3 辺りの変更

https://github.com/r7kamura/rapa のここ最近の変更について記しておく。

:item_ids / :item_type

Rapa::Client#list_items の引数として、:asins というキーワード引数を取っていたが、これが :item_ids に変わった。Web API 側に ASIN 以外の ID 体系でも検索できる機能が備わっているので、それに対応して :item_type を指定することで検索できるようになっている。

escape bug

Web API へのリクエストに付ける署名アルゴリズムが壊れていたのが改善された。今まで壊れていて、エスケープが必要な文字列が入ると 403 になってしまっていた……。

Rapa::Resources::ItemResource#browse_nodes

Amazon の商品には BrowseNode という木構造状のタグが複数設定されており、これを扱う機能を取付けた。ある商品は本であるかということを調べるために、この木構造を辿る必要があるので、木構造操作について少し便利な機能も提供している。

Optional な Array の廃止

Product Advertising API ではレスポンスに含めてほしい情報をリクエスト時にパラメータとして設定できるので、商品情報のある属性が場合によって含まれたり含まれなかったりする。そのために Array または nil を返すといった属性が幾つか存在していたが、XML を返すこの Web API においては空であることと存在しないことを区別する理由が無いので、常に配列を返すようなインターフェースに変更した。

日を含まない日付への対応

発売日を Date クラスのインスタンスとして返すような機能があるが、2017-03 のように発売日の表記に日を含まない商品が極稀に存在し、これによりエラーが発生していた。これをその月の1日として扱うように変更した。

価格の取得

新品の価格や中古価格など、商品の価格を取得するための機能を幾つか追加した。余談だが Kindle の書籍はそもそも価格情報を Web API で提供していなかったりする。