From 6d6061f1c2a148e6b594039e2b25bff26995942a Mon Sep 17 00:00:00 2001 From: "Robin H. Johnson" Date: Sat, 11 Oct 2008 05:59:13 +0000 Subject: Make it work much similar to the original jeeves functionality. If you want a tinyurl form of the last URL in a channel, just call !lasturl. --- gentoo-tinyurl.rb | 31 ++++++++++++++++++++++++++++--- 1 file 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' -- cgit v1.2.3-65-gdbad