diff options
Diffstat (limited to 'rbot/plugins/google.rb')
-rw-r--r-- | rbot/plugins/google.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/rbot/plugins/google.rb b/rbot/plugins/google.rb new file mode 100644 index 00000000..5fa466e7 --- /dev/null +++ b/rbot/plugins/google.rb @@ -0,0 +1,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) + + http.start {|http| + begin + 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") |