class GoogleSuggest
Constants
- VERSION
Attributes
home_language[RW]
proxy[RW]
region[RW]
Public Class Methods
configuration()
click to toggle source
# File lib/google_suggest.rb, line 18 def self.configuration @configuration ||= Configuration.new end
configure() { |configuration| ... }
click to toggle source
# File lib/google_suggest.rb, line 12 def self.configure yield configuration if block_given? configuration end
new(options = {})
click to toggle source
# File lib/google_suggest.rb, line 26 def initialize(options = {}) @home_language = self.class.configuration.home_language @proxy = self.class.configuration.proxy @region = options[:region] || self.class.configure.region end
suggest_for(keyword, options = {})
click to toggle source
# File lib/google_suggest.rb, line 22 def self.suggest_for(keyword, options = {}) new(options).suggest_for(keyword) end
Public Instance Methods
suggest_for(keyword)
click to toggle source
# File lib/google_suggest.rb, line 32 def suggest_for(keyword) query = { output: 'toolbar', hl: home_language, q: keyword } res = http_get('/complete/search', query) parse(res.body.to_s) end
Private Instance Methods
google_host()
click to toggle source
# File lib/google_suggest.rb, line 62 def google_host Region.host_for(region) end
http()
click to toggle source
# File lib/google_suggest.rb, line 46 def http if @proxy proxy_url = URI.parse(@proxy) http_class = Net::HTTP.Proxy(proxy_url.host, proxy_url.port) else http_class = Net::HTTP end http_class.new(google_host) end
http_get(path, query)
click to toggle source
# File lib/google_suggest.rb, line 56 def http_get(path, query) path = path + '?' + URI.encode_www_form(query) req = Net::HTTP::Get.new(path) http.request(req) end
parse(doc)
click to toggle source
# File lib/google_suggest.rb, line 66 def parse(doc) doc = doc.encode('UTF-8', 'Shift_JIS') unless doc.valid_encoding? xml = REXML::Document.new(doc) suggestions = REXML::XPath.match(xml, '/toplevel/CompleteSuggestion/suggestion').map do |suggest| suggest.attribute('data').value end suggestions end