]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/url.rb
make sure @commands is never nil in script.rb
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / url.rb
index 1e72a3a14f4a6be39e980576caa632253c9ed3ed..b04beb871be52588c98d45145b030eb1fe8d915d 100644 (file)
@@ -275,7 +275,7 @@ class UrlPlugin < Plugin
     :default => 100, :validate => Proc.new{|v| v > 0},
     :desc => "Maximum number of urls to store. New urls replace oldest ones.")
   BotConfig.register BotConfigBooleanValue.new('url.display_link_info',
-    :default => true, 
+    :default => false, 
     :desc => "Get the title of any links pasted to the channel and display it (also tells if the link is broken or the site is down)")
   
   def initialize
@@ -312,31 +312,31 @@ class UrlPlugin < Plugin
     title = title[0..255] if title.length > 255
     "[Link Info] title: #{title}"
   end
-\r
-  def read_data_from_response(response, amount)\r
-    \r
-    amount_read = 0\r
-    chunks = []\r
-    \r
-    response.read_body do |chunk|   # read body now\r
-      \r
-      amount_read += chunk.length\r
-      \r
-      if amount_read > amount\r
-        amount_of_overflow = amount_read - amount\r
-        chunk = chunk[0...-amount_of_overflow]\r
-      end\r
-      \r
-      chunks << chunk\r
-\r
-      break if amount_read >= amount\r
-      \r
-    end\r
-    \r
-    chunks.join('')\r
-    \r
-  end\r
-\r
+
+  def read_data_from_response(response, amount)
+    
+    amount_read = 0
+    chunks = []
+    
+    response.read_body do |chunk|   # read body now
+      
+      amount_read += chunk.length
+      
+      if amount_read > amount
+        amount_of_overflow = amount_read - amount
+        chunk = chunk[0...-amount_of_overflow]
+      end
+      
+      chunks << chunk
+
+      break if amount_read >= amount
+      
+    end
+    
+    chunks.join('')
+    
+  end
+
 
   def get_title_for_url(uri_str, depth=10)
     # This god-awful mess is what the ruby http library has reduced me to.
@@ -346,31 +346,33 @@ class UrlPlugin < Plugin
         raise "Error: Maximum redirects hit."
     end
     
-    puts "+ Getting #{uri_str}"
+    debug "+ Getting #{uri_str}"
     url = URI.parse(uri_str)
     return if url.scheme !~ /https?/
+
+    title = nil
     
-    puts "+ connecting to #{url.host}:#{url.port}"
+    debug "+ connecting to #{url.host}:#{url.port}"
     http = @bot.httputil.get_proxy(url)
-    title = http.start { |http|
-      url.path = '/' if url.path == ''\r
-\r
-      http.request_get(url.path, "User-Agent" => "rbot-url_plugin/666.666") { |response|\r
+    http.start { |http|
+      url.path = '/' if url.path == ''
+
+      http.request_get(url.path, "User-Agent" => "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)") { |response|
         
         case response
-          when Net::HTTPRedirection then
+          when Net::HTTPRedirection, Net::HTTPMovedPermanently then
             # call self recursively if this is a redirect
             redirect_to = response['location']  || './'
-            puts "+ redirect location: #{redirect_to.inspect}"
+            debug "+ redirect location: #{redirect_to.inspect}"
             url = URI.join url.to_s, redirect_to
-            puts "+ whee, redirecting to #{url.to_s}!"
-            title = get_title_for_url(url.to_s, depth-1)
+            debug "+ whee, redirecting to #{url.to_s}!"
+            return get_title_for_url(url.to_s, depth-1)
           when Net::HTTPSuccess then
             if response['content-type'] =~ /^text\//
               # since the content is 'text/*' and is small enough to
               # be a webpage, retrieve the title from the page
-              puts "+ getting #{url.request_uri}"\r
-              data = read_data_from_response(response, 50000)\r
+              debug "+ getting #{url.request_uri}"
+              data = read_data_from_response(response, 50000)
               return get_title_from_html(data)
             else
               # content doesn't have title, just display info.
@@ -381,10 +383,14 @@ class UrlPlugin < Plugin
             return "[Link Info] Error getting link (#{response.code} - #{response.message})"
           when Net::HTTPServerError then
             return "[Link Info] Error getting link (#{response.code} - #{response.message})"
-        end # end of "case response"\r
-          \r
+          else
+            return nil
+        end # end of "case response"
+          
       } # end of request block
-    } # end of http start block\r
+    } # end of http start block
+
+    return title
     
   rescue SocketError => e
     return "[Link Info] Error connecting to site (#{e.message})"