require 'httparty'
require 'will_paginate/collection'
require 'ostruct'

class GoogleCustomSearch
  include HTTParty
  base_uri 'https://www.googleapis.com/customsearch/v1'
  format :json
  default_params :cx => 'google-costom-searck-id', :key => 'google-api-key'

  def self.search(q = '', options = {})
    return [] if q.blank?
    options[:page] ||= 1
    options[:per_page] ||= 10
    WillPaginate::Collection.create( options[:page], options[:per_page] ) do |pager|
      response = get('', :query => {
        :num => pager.per_page,
        :start => ( ( pager.current_page - 1) * pager.per_page ) + 1,
        :q => q
      })
      puts response.inspect
      pager.replace( response['items'].map{|t| OpenStruct.new(t) } )
      pager.total_entries = response['queries']['request'][0]['totalResults']
    end
  end

end