Amazon WebService を使う
Ruby on Rails でウェブサービスの実装をしてみよう.まずは,アマゾンのWebAPI の検索からだな.ruby-amazon を使えば,もっと簡単に書けるみたいなんだけど,とりあえずベタに書いてみる.
出来上がりはこんな感じ.おおっ!!!!!今さらながら感動的だ!!!
Amazon Webサービス Access Key ID を取得
- Amazon.co.jp にいき,ヘルプページから,Webサービスにいく.
- 登録IDの取得を行い,Access Key ID を取得する
- ついでに,AmazonアソシエイトのIDも取得しちゃいます.
- 「開発の現場 Vol.2」を参考にしました.
ビュー
- 検索フォーム
[app/views/books/amazon_form.rhtml] <%= form_remote_tag(:url => { :action => :amazon_search } ,:update => 'result', :loading=>'Element.show("loading")', :complete=>'Element.hide("loading")') %> <%= text_field_tag :keyword %> <%= select_tag :mode ,options_for_select(@mode) %> <%= submit_tag 'search'%> <%= end_form_tag %> <div id="loading" style="display:none;">Now Loading...</div> <div id="result"></div>
- 検索結果画像表示
[app/views/books/amazon_search.rhtml] <% if @asins %> <div style="border:1px solid black;margin:10px;padding:10px;background-color:#aaa;"> <% for asin in @asins %> <%= link_to(image_tag("http://images-jp.amazon.com/images/P/#{asin}.09.MZZZZZZZ.jpg", :border=> 0, :height=> '80'), "http://www.amazon.co.jp/exec/obidos/ASIN/#{asin}") %> <% end %> </div> <% end %>
コントロール
- Amazon_Dev_Token に,取得した Amazon Webサービス Access Key ID をセットする.
- アソシエイトIDは未使用
Amazon_Mode = { "books-jp" => "books-jp", "books-us" => "books-us", "music-jp" => "music-jp", "dvd-jp" => "dvd-jp" } Amazon_Dev_Token = 'XXXXXXXXXXXXXXXXXXX' def amazon_form @mode = Amazon_Mode end def amazon_search require 'open-uri' @asins = [] @asins = [] mode = @params[:mode] mode = 'books-jp' unless Amazon_Mode.has_value?(mode) keyword = CGI::escape(@params[:keyword]) url = "http://xml.amazon.co.jp/onca/xml3?t=nomusinolife-22&mode=#{mode}&f=xml&type=lite&dev-t=#{Amazon_Dev_Token}&page=1&locale=jp&KeywordSearch=#{keyword}" source = open(url).read source.gsub(%r!<Asin>(.+?)</Asin>!){ @asins << $1 } render :layout => false end