summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gadling <dave@toasterwaffles.com>2010-03-12 21:53:06 -0800
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2010-07-01 15:10:59 +0200
commit98c6a8359d88c89c78faf74aa12994bd713d24c8 (patch)
treeefd447dea13c125b09772dcc24106aab89e6bff4
parenta99f1d32eaf346bec43bcb74775bf32c04030d39 (diff)
url: Add a config option to auto-shorten URLs.
shortenurls: Add a favorite service config option. Auto-shortening URLs is mutually exclusive with showing information about them as the output would be very confusing. The favorite shortenting service option only really applies when other plugins call shortenurls.shorten, so they don't have to hard-code which shortening service to use.
-rw-r--r--data/rbot/plugins/shortenurls.rb13
-rw-r--r--data/rbot/plugins/url.rb11
2 files changed, 23 insertions, 1 deletions
diff --git a/data/rbot/plugins/shortenurls.rb b/data/rbot/plugins/shortenurls.rb
index 3aee6f4d..782a4e27 100644
--- a/data/rbot/plugins/shortenurls.rb
+++ b/data/rbot/plugins/shortenurls.rb
@@ -22,6 +22,10 @@ class ShortenURLs < Plugin
:default => ['rubyurl', 'shorterlink'],
:requires_rescan => true,
:desc => "List of nonfunctioning shorturl services")
+ Config.register Config::StringValue.new('shortenurls.favorite_service',
+ :default => 'tinyurl',
+ :desc => "Default shortening service. Probably only applies when other plugins " +
+ "use this one for shortening")
attr_accessor :services
def initialize
@@ -56,7 +60,14 @@ class ShortenURLs < Plugin
return nil
end
- service = (params[:service] || m.plugin).to_sym
+ if params.has_key? :service
+ service = params[:service]
+ elsif m != nil and m.plugin != nil
+ service = m.plugin
+ else
+ service = @bot.config['shortenurls.favorite_service']
+ end
+ service = service.to_sym
service = :rubyurl if service == :shorturl
tried = []
diff --git a/data/rbot/plugins/url.rb b/data/rbot/plugins/url.rb
index 5d73382d..8327dd94 100644
--- a/data/rbot/plugins/url.rb
+++ b/data/rbot/plugins/url.rb
@@ -15,6 +15,12 @@ class UrlPlugin < Plugin
Config.register Config::IntegerValue.new('url.display_link_info',
:default => 0,
:desc => "Get the title of links pasted to the channel and display it (also tells if the link is broken or the site is down). Do it for at most this many links per line (set to 0 to disable)")
+ Config.register Config::BooleanValue.new('url.auto_shorten',
+ :default => false,
+ :desc => "Automatically spit out shortened URLs when they're seen. Check shortenurls for config options")
+ Config.register Config::IntegerValue.new('url.auto_shorten_min_length',
+ :default => 48,
+ :desc => "Minimum length of URL to auto-shorten. Only has an effect when url.auto_shorten is true.")
Config.register Config::BooleanValue.new('url.titles_only',
:default => false,
:desc => "Only show info for links that have <title> tags (in other words, don't display info for jpegs, mpegs, etc.)")
@@ -153,6 +159,11 @@ class UrlPlugin < Plugin
urls.each do |urlstr|
debug "working on #{urlstr}"
next unless urlstr =~ /^https?:\/\/./
+ if @bot.config['url.auto_shorten'] == true and
+ urlstr.length >= @bot.config['url.auto_shorten_min_length']
+ m.reply(bot.plugins['shortenurls'].shorten(nil, {:url=>urlstr, :called=>true}))
+ next
+ end
title = nil
debug "Getting title for #{urlstr}..."
reply = nil