summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
Diffstat (limited to 'data')
-rw-r--r--data/rbot/plugins/delicious.rb113
1 files changed, 0 insertions, 113 deletions
diff --git a/data/rbot/plugins/delicious.rb b/data/rbot/plugins/delicious.rb
deleted file mode 100644
index 53da34b4..00000000
--- a/data/rbot/plugins/delicious.rb
+++ /dev/null
@@ -1,113 +0,0 @@
-#-- vim:sw=2:et
-#++
-#
-# :title: Del.icio.us plugin
-#
-# Author:: dmitry kim <dmitry.kim@gmail.com>
-# Copyright:: (C) 2007 dmitry kim
-# License:: MIT
-#
-# This plugin uses url_added hook (event) to submit all urls seen by url.rb
-# plugin to a preconfigured account on http://del.icio.us/
-#
-require 'rexml/document'
-require 'cgi'
-
-class DeliciousPlugin < Plugin
- DIU_BASE = 'https://api.del.icio.us/v1/posts/'
-
- attr_accessor :last_error
-
- Config.register Config::StringValue.new('delicious.user',
- :default => '', :desc => "Username on del.icio.us")
- Config.register Config::StringValue.new('delicious.password',
- :default => '', :desc => "Password on del.icio.us")
- Config.register Config::StringValue.new('delicious.user_fmt',
- :default => 'user:%s', :desc => "How to convert users to tags?")
- Config.register Config::StringValue.new('delicious.channel_fmt',
- :default => 'channel:%s', :desc => "How to convert channels to tags?")
-
- def help(plugin, topic="")
- "logs urls seen to del.icio.us. you can use [tags: tag1 tag2 ...] to provide tags. special tags are: #{Underline}!hide#{Underline} - log the url as non-shared, #{Underline}!skip#{Underline} - don't log the url. Commands: !#{Bold}delicious#{Bold} => show url of del.icio.us feed of bot url log. "
- end
-
- def diu_req(verb, opts = {})
- uri = URI.parse(DIU_BASE + verb)
- uri.query = opts.map { |k, v| "#{k}=#{CGI.escape v}" }.join('&')
- uri.user = @bot.config['delicious.user']
- uri.password = @bot.config['delicious.password']
-
- if uri.user.empty? || uri.password.empty?
- self.last_error = 'delicious.user and delicious.password must be set!'
- raise self.last_error
- end
-
- return REXML::Document.new(@bot.httputil.get(uri, :cache => false))
- end
-
- def diu_add(url, opts = {})
- old = diu_req('get', :url => url).root.get_elements('/posts/post')[0] rescue nil
- opts[:tags] ||= ''
- if old
- opts[:description] ||= old.attribute('description').to_s
- opts[:extended] ||= old.attribute('extended').to_s
- opts[:tags] = [opts[:tags].split, old.attribute('tag').to_s.split].flatten.uniq.compact.join(' ')
- debug "reusing existing del.icio.us post"
- else
- debug "adding new del.icio.us post"
- end
- opts[:url] = url
- diu_req('add', opts)
- end
-
- def event_url_added(url, options = {})
- debug("called with #{url}, #{options.inspect}")
- if @bot.config['delicious.user'].empty?
- debug "del.icio.us plugin not configured, skipping"
- return
- end
- opts = Hash.new
- opts[:description] = options[:title] || options[:info] || url
- opts[:extended] = options[:extra] if options[:extra]
- opts[:tags] = @bot.config['delicious.user_fmt'] % options[:nick]
- if options[:channel]
- opts[:tags] << ' ' + (@bot.config['delicious.channel_fmt'] % options[:channel])
- end
- if options[:ircline] and options[:ircline].match(/\[tag(?:s)?:([^\]]+)\]/)
- tags = $1
- tags.tr(',', ' ').split(/\s+/).each do |t|
- if t.sub!(/^!/, '')
- case t
- when 'nolog', 'no-log', 'dont-log', 'dontlog', 'skip'
- debug "skipping #{url} on user request"
- return
- when 'private', 'unshared', 'not-shared', 'notshared', 'hide'
- debug "hiding #{url} on user request"
- opts[:shared] = 'no'
- end
- else
- opts[:tags] << ' ' + t
- end
- end
- end
- debug "backgrounding del.icio.us api call"
- Thread.new { diu_add(url, opts) }
- end
-
- def delicious(m, params)
- uname = @bot.config['delicious.user']
- repl = String.new
- if uname.empty?
- repl << 'error: del.icio.us username not set'
- else
- repl << "http://del.icio.us/#{uname}"
- if self.last_error
- repl << ", last error: #{self.last_error}"
- self.last_error = nil
- end
- end
- m.reply repl
- end
-end
-plugin = DeliciousPlugin.new
-plugin.map 'delicious'