Hatena::ブログ(Diary)

ユーウツな雨がふりつづいても雪がハートを曇らせてもドアの中で待っていた君に魔法をかけたいのさ RSSフィード

2006-09-26

楽天API? RakuAPI?

楽天市場非公式ウェブサービスRaku API(http://rakuapi.ddo.jp/)

rubyから使うライブラリを書いてみました.

flickr.rbをもとにしています.

rakuapi.rb

require 'cgi'
require 'net/http'
require 'rubygems'
require 'xmlsimple'

class RakuAPI

  def initialize(affiliate_code=nil)
    @affiliate_code = affiliate_code
    @host = 'http://rakuapi.ddo.jp'
    @api = '/api'
  end

  def search(query, *params)
    response = XmlSimple.xml_in(http_get(request_url(query, params)), { 'ForceArray' => false, 'KeepRoot' => true})
    response['ResultSet']['Result'].collect { |product| Product.new(product) } if response['ResultSet']['Result']
  end

  def request_url(query, *params)
    url = "#{@host}#{@api}/?query=#{query}"
    params[0][0].each_key do |key| url += "&#{key}=" + CGI::escape(params[0][0][key]) end if params[0][0]
    url += "&affiliate_code=#{@affiliate_code}" if @affiliate_code
    url
  end

  def http_get(url)
    Net::HTTP.get_response(URI.parse(url)).body.to_s
  end

  class Product

    attr_reader :title, :price, :tax, :url, :thumbnailUrl, :shopName, :shopUrl

    def initialize(product)
      @title        = product['Title']
      @price        = product['Price']
      @tax          = product['Tax']
      @url          = product['Url']
      @thumbnail_url = product['ThumbnailUrl']
      @shop_name     = product['ShopName']
      @shop_url      = product['ShopUrl']
    end
  end # end of Product class

end # end of RakuAPI class

で↓んな感じでたたけます

サンプル

#!/usr/bin/ruby

require 'rakuapi'

#api = RakuAPI.new('affiliate_code')
api = RakuAPI.new
items = api.search('MackBook')
items.collect {|item| p item.price} if items

items = api.search('MacBook', {:row => '5'})
items.collect {|item| p item.price} if items

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/kajidai/20060926/1159299523