require "uri"
class ShortenURLs < Plugin
- # starting from about shorturl 0.8.4, the WWW module is not defined
+ # starting from about shorturl 0.8.4, the WWW module is not defined
include WWW rescue nil
Config.register Config::ArrayValue.new('shortenurls.services_blacklist',
: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
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 = []
begin
tried << service
- raise WWW::InvalidService, "#{service} blacklisted" if @blacklist.include?(service)
- short = WWW::ShortURL.shorten(url, service)
- raise WWW::InvalidService, "#{service} returned an empty string for #{url}" unless short and not short.empty?
- rescue WWW::InvalidService
+ raise InvalidService, "#{service} blacklisted" if @blacklist.include?(service)
+ short = ShortURL.shorten(url, service)
+ raise InvalidService, "#{service} returned an empty string for #{url}" unless short and not short.empty?
+ rescue InvalidService
pool = services - tried
if pool.empty?
m.reply "#{service} failed, and I don't know what else to try next" unless params[:called]