require 'rexml/document'
-require 'uri/common'
class SlashdotPlugin < Plugin
include REXML
end
def search_slashdot(m, params)
- max = params[:limit].to_i
- search = params[:search].to_s
+ max = params[:limit].to_i
+ search = params[:search].to_s
- begin
- xml = @bot.httputil.get(URI.parse("http://slashdot.org/search.pl?content_type=rss&query=#{URI.escape(search)}"))
- rescue URI::InvalidURIError, URI::BadURIError => e
- m.reply "illegal search string #{search}"
- return
- end
+ xml = @bot.httputil.get("http://slashdot.org/search.pl?content_type=rss&query=#{CGI.escape(search)}")
unless xml
m.reply "search for #{search} failed"
return
end
- puts xml.inspect
+ debug xml.inspect
begin
doc = Document.new xml
rescue REXML::ParseException => e
- puts e
+ warning e.inspect
m.reply "couldn't parse output XML: #{e.class}"
return
end
m.reply "search for #{search} failed"
return
end
- puts doc.inspect
+ debug doc.inspect
max = 8 if max > 8
done = 0
doc.elements.each("*/item") {|e|
desc = e.elements["title"].text
desc.gsub!(/(.{150}).*/, '\1..')
- reply = sprintf("%s | %s", e.elements["link"].text, desc)
+ reply = sprintf("%s | %s", e.elements["link"].text, desc.ircify_html)
m.reply reply
done += 1
break if done >= max
end
def slashdot(m, params)
- puts params.inspect
+ debug params.inspect
max = params[:limit].to_i
- puts "max is #{max}"
- xml = @bot.httputil.get(URI.parse("http://slashdot.org/slashdot.xml"))
+ debug "max is #{max}"
+ xml = @bot.httputil.get('http://slashdot.org/slashdot.xml')
unless xml
m.reply "slashdot news parse failed"
return