個人的な理由で、Amazon Web Servicesのカートを使うアプリが必要になりました。せっかくなので、Rubyで作ってみようかと思います。Rubyでawsを使えるライブラリは以下の3つです。
- amazon-ecs
- ruby-amazon
- ruby-aws (ruby-aaws)
- ruby-aws
一番最後のruby-awsは、もう保守もされていないっぽいですし作り的にもイマイチのような気がします。候補としては、amazon-ecsとruby-amazonです。私の欲しいカート機能は、amazon-ecsには実装されていません。ruby-amazonはカート機能は備えていますが、元々ecs3に対応したライブラリです。作者的にはruby-aws(一番下のruby-awsとは別物)を使えとのことです。ということで、ruby-aawsを使うのが宜しいようです。
一方、amazon-ecsはクエリーをそのまま投げることが出来るので、下記の人のように割と簡単にカート機能を自分で実装することも出来そうです。
RoRで Amazon ショッピングカート作成 カート編
調べる前にamazon-ecsを使ってみたのですが、簡単に使う事が出来ました。
install
gem install amazon-ecs
model/item.rb
class Item attr_accessor :asin, :title, :image, :url def initialize(asin,title = nil, url = nil, image = nil) @asin = asin @title = title @url = url @image = image end end
controller/amazon_controller.rb
class AmazonController < ApplicationController def index if request.get? else @keyword = params[:keyword] res = Amazon::Ecs.item_search(@keyword, { :response_group => 'Medium', :sort => 'salesrank' }) @items = [] res.items.each do |item| @items << Item.new( item.get('asin'), item.get('itemattributes/title'), item.get('detailpageurl'), item.get_hash('smallimage') ) end end end end
view/amazon/index.rhtml
<p>Amazonからデータを取得</p> <%- form_tag :controller => 'amazon', :action => 'index' do -%> <%= text_field_tag "keyword", @keyword %><%= submit_tag "アマゾンで検索" %> <%- end -%> <%- if @items && @items.size > 0 -%> <p>検索結果</p> <table> <%- @items.each do |item| -%> <tr> <td><%= link_to(image_tag(item.image[:url], :size => "#{item.image[:width]}x#{item.image[:height]}", :alt => item.title), item.url, :target => '_blank') %></td> <td><%= item.asin %></td> <td><%= item.title %></td> </tr> <%- end -%> </table> <%- end -%>