summaryrefslogtreecommitdiff
path: root/rbot/plugins/google.rb
blob: 2e9aacba683c7f87a324be6e5c4fb33c1eb67f42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require 'net/http'
require 'uri/common'

Net::HTTP.version_1_2

class GooglePlugin < Plugin
  def help(plugin, topic="")
    "search <string> => search google for <string>"
  end
  def privmsg(m)
    unless(m.params && m.params.length > 0)
      m.reply "incorrect usage: " + help(m.plugin)
      return
    end
    searchfor = URI.escape m.params

    query = "/search?q=#{searchfor}&btnI=I%27m%20feeling%20lucky"
    result = "not found!"

    proxy_host = nil
    proxy_port = nil

    if(ENV['http_proxy'])
      if(ENV['http_proxy'] =~ /^http:\/\/(.+):(\d+)$/)
        proxy_host = $1
        proxy_port = $2
      end
    end

    http = Net::HTTP.new("www.google.com", 80, proxy_host, proxy_port)

    begin
      http.start {|http|
        resp = http.get(query)
        if resp.code == "302"
          result = resp['location']
        end
      }
    rescue => e
      p e
      if e.response && e.response['location']
        result = e.response['location']
      else
        result = "error!"
      end
    end
    m.reply "#{m.params}: #{result}"
  end
end
plugin = GooglePlugin.new
plugin.register("search")