Sticky Plus!: 楽天検索機能を付けました

http://storehouse.quickvps.net/sticky_plus/sticky/board?url=http%3A%2F%2Fd.hatena.ne.jp%2Fwinebarrel
適当な言葉で検索(楽天)すると、写真がぺたぺたぺたぺた…

楽天検索のコードはこんな感じ。

require 'cgi'
require 'json'
require 'open-uri'
require 'ostruct'

module Rakuten
  class Search
    @@base_url = 'http://api.rakuten.co.jp/rws/1.7/json'

    def initialize(developerId)
      @developerId = developerId
    end

    def query(phrase, params = {})
      qs = query_string({
        :developerId => @developerId,
        :operation   => 'ItemSearch',
        :keyword     => phrase,
        :version     => '2007-04-11',
        :hits        => 10
      }.update(params))

      open("#{@@base_url}?#{qs}") {|f| items(f.read) }
    end

    private
    def query_string(params)
      params.map {|k, v| "#{k.to_s}=#{CGI.escape(v.to_s)}" }.join('&')
    end

    def items(source)
      json = JSON.parse(source)
      items = json['Body']['ItemSearch']['Items']['Item']
      items.map {|i| OpenStruct.new(i) }
    end
  end
end