vaccum を使用して、Amazon Product Advertising API から製品の詳細を取得しています。req = Vacuum.new
req.configure(key: configatron.api.amazon.productAPI.key,
secret: configatron.api.amazon.productAPI.secret,
tag: 'biz-val')
regex = Regexp.new "http://([^/]+)/([\\w-]+/)?(dp|gp/product|exec/obidos/asin)/(\\w+/)?(\\w{10})"
productID=regex.match(@url).captures[4];
host=regex.match(@url).captures[0];
utype=regex.match(@url).captures[2];
@url="http://#{host}/#{utype}/#{productID}"
params = { 'Operation' => 'ItemLookup',
'ItemId' => productID,
'ResponseGroup'=>'Large'
}
res = req.get(:query => params)
hsh=Hash.from_xml(res.body)
@details=hsh
item=hsh[:ItemLookupResponse][:Items][:Item]#Throws an Undefined method [] for nilClass
正規表現の解析は無視できます。res.body から生成されたハッシュは有効なハッシュであり、レンダリングされた json (@details) で正常に表示されますが、コードでアクセスしようとすると nilClass がスローされます。hsh[:ItemLookupResponse]
これは、ハッシュ以外のものを返すためだと思います。しかし、それが何を返しているのかわかりません。:Items にアクセスするにはどうすればよいですか?