aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gentoo-tinyurl.rb')
-rw-r--r--gentoo-tinyurl.rb31
1 files changed, 28 insertions, 3 deletions
diff --git a/gentoo-tinyurl.rb b/gentoo-tinyurl.rb
index 5bbab71..8a6f6d9 100644
--- a/gentoo-tinyurl.rb
+++ b/gentoo-tinyurl.rb
@@ -2,7 +2,10 @@ require "shorturl"
class GentooShortenURLs < Plugin
def initialize
super
+ @@cached = {}
+ @@cached['lasturl'] = {}
end
+
def lurk?(m)
replyto = nil
replyto = m.replyto.to_s if m.is_a?(Irc::UserMessage)
@@ -11,20 +14,42 @@ class GentooShortenURLs < Plugin
end
def listen(m)
return if m.address?
- return unless lurk?(m)
+ #return unless lurk?(m)
return unless m.message =~ /(\b|^)[a-z]+:\/\/.*($|\s)/i
m.message.split.each do |word|
next unless word =~ /(\b|^)[a-z]+:\/\/.*($|\s)/i
- next unless word.length >= 32
- shrink(m, {:url => word})
+ #next unless word.length >= 32
+ #shrink(m, {:url => word})
+ set_lasturl(m, word)
end
end
def shrink(m, params)
short = ShortURL.shorten(params[:url], :tinyurl)
m.reply short
end
+ def fetch_lasturl(m)
+ address = m.replyto.to_s
+ url = [0, nil]
+ url = @@cached['lasturl'][address] if @@cached['lasturl'].has_key?(address)
+ return url
+ end
+ def set_lasturl(m, url)
+ address = m.replyto.to_s
+ @@cached['lasturl'][address] = [Time.now.tv_sec, url]
+ end
+ def lasturl(m, params)
+ url = fetch_lasturl(m)
+ if url[1]
+ shrink(m, {:url => url})
+ else
+ m.reply "No URL seen yet"
+ end
+ end
end
plugin = GentooShortenURLs.new
plugin.map 't :url',
:action => 'shrink',
:auth_path => 'view'
+plugin.map 'lasturl',
+ :action => 'lasturl',
+ :auth_path => 'view'