apac.js(amazonのAPIを簡単に使えるようになるよ!!)
https://github.com/dmcquay/node-apac
けど、そんなにも簡単に行かなかったお話。
apacのドキュメントを見てもらうと以下の様に書かれている。
var opHelper = new OperationHelper({
awsId: '[YOUR AWS ID HERE]',
awsSecret: '[YOUR AWS SECRET HERE]',
assocId: '[YOUR ASSOCIATE TAG HERE]'
// xml2jsOptions: an extra, optional, parameter for if you want to pass additional options for the xml2js module. (see https://github.com/Leonidas-from-XIV/node-xml2js#options)
});
ここでendPointの指定が可能なんです。
(endPointの指定によって、どこの国の情報を得たいか指定する。)
apacのソースを見ると、defaultのendPointの指定がある。
「お、日本のendPointだ!じゃあ指定しなくていいやー!!」
と思って処理をしてたら。
465610 is not a valid value for BrowseNodeId. Please change this value and retry your request.
って延々言われるという。
(465610は、日本の書籍ID)
endPointが上手く反映されないのかなーってUSのBrowseNodeIdを指定したら、ちゃんととれた。
「なんだ、渡す値は合ってるっぽいじゃん!!」
で、よくよく見たら、日本のendPointでなく、
ドメインに com とありました…。
そらそうですよ…。
日本製でも無いライブラリが日本の情報をデフォルトで取るようになんかなっているわけないんですよ!!
というわけで。
var opHelper = new OperationHelper({
endPoint: 'ecs.amazonaws.jp', //日本のendPointを追記
awsId: '[YOUR AWS ID HERE]',
awsSecret: '[YOUR AWS SECRET HERE]',
assocId: '[YOUR ASSOCIATE TAG HERE]'
// xml2jsOptions: an extra, optional, parameter for if you want to pass additional options for the xml2js module. (see https://github.com/Leonidas-from-XIV/node-xml2js#options)
});
#教訓
ソースは、しっかり読め。