Sha256: 5d2f84e3da0fdc6ad220edfdcc5074a9a16b0644c4bfc6b8164bbf566ffdbd49

Contents?: true

Size: 1008 Bytes

Versions: 3

Compression:

Stored size: 1008 Bytes

Contents

require 'uri'
require 'open-uri'
require 'hpricot'

module GoogleCustomSearch

  class Search

    class << self
      attr_accessor :google_search_api_key
    end
    def initialize
      @page_index = 0
      @query_parameters = {
              :num => 10,
              :start => 1
      }
    end

    def for keyword
      uri = build_query_url(keyword)
      search_data = uri.read
      xml_data = Hpricot(search_data)
      GoogleCustomSearch::SearchResult.new xml_data
    end

    def with_page_index index
      @page_index = index - 1
      self
    end

    private
    def build_query_url(keyword)
      @query_parameters[:start] = @query_parameters[:num] * @page_index
      google_search_url = "http://www.google.com/cse?client=google-csbe&output=xml_no_dtd"
      arguments = @query_parameters.collect { |key, value| "#{key}=#{value}" }
      arguments.sort!
      URI.parse("#{google_search_url}&cx=#{self.class.google_search_api_key}&q=#{keyword}&"+arguments.join("&"))
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
trusty_google_custom_search-1.0.2 lib/google_custom_search/search.rb
trusty_google_custom_search-1.0.1 lib/google_custom_search/search.rb
trusty_google_custom_search-1.0.0 lib/google_custom_search/search.rb