Sha256: 77c8823a1a92ed4efecd61a62fdf7f3f0dd757a869249bb2836d5784e21bbd00
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
require 'version' require 'book/response' require 'httparty' require 'cgi' module GoogleBooks include HTTParty format :json class << self attr_accessor :parameters # Submits query to the current Google API for Books. # # 1st param passes all varieties of acceptable query strings # # 2nd param passes options hash: # * :count passes number of results to display per page (default=5) # * :page passes the page number (default=1) # * :api_key passes the application specific Google API key # # 3rd parameter optionally passes user's IP address # * User IP may be require in order for request to be made to the # Google API from applications residing on decentralized cloud servers # See http://www.google.com/support/forum/p/booksearch-apis/thread?tid=2034bed9a98c15cb&hl=en def search(query, options = {}, remote_ip = nil) (headers 'X-Forwarded-For' => remote_ip.to_s) unless remote_ip.nil? self.parameters = { 'q' => query } options[:page] ||= 1 options[:count] ||= 5 parameters['filter'] = options[:filter] if options[:filter] parameters['startIndex'] = options[:count] * (options[:page] - 1) parameters['maxResults'] = options[:count] parameters['key'] = options[:api_key] if options[:api_key] parameters['orderBy'] = 'newest' if options[:order_by].eql?('newest') parameters['country'] = options[:country] Response.new(get(url.to_s)) end private def query parameters. map { |k, v| "#{k}=#{CGI.escape(v.to_s)}" }. join('&') end # Queries the new Google API. The former Google Book Search API is deprecated # http://code.google.com/apis/books/docs/gdata/developers_guide_protocol.html def url URI::HTTPS.build(:host => 'www.googleapis.com', :path => '/books/v1/volumes', :query => query) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
googlebooks-0.0.9 | lib/googlebooks.rb |