+ def change_rss(m, params)\r
+ handle = params[:handle].downcase\r
+ feed = @feeds.fetch(handle, nil)\r
+ unless feed\r
+ m.reply "No such feed with handle #{handle}"\r
+ return\r
+ end\r
+ case params[:what].intern\r
+ when :handle\r
+ new = params[:new].downcase\r
+ if @feeds.key?(new) and @feeds[new]\r
+ m.reply "There already is a feed with handle #{new}"\r
+ return\r
+ else\r
+ feed.mutex.synchronize do\r
+ @feeds[new] = feed\r
+ @feeds.delete(handle)\r
+ feed.handle = new\r
+ end\r
+ handle = new\r
+ end\r
+ when :url\r
+ new = params[:new]\r
+ feed.mutex.synchronize do\r
+ feed.url = new\r
+ end\r
+ when :format, :type\r
+ new = params[:new]\r
+ new = nil if new == 'default'\r
+ feed.mutex.synchronize do\r
+ feed.type = new\r
+ end\r
+ when :refresh\r
+ new = params[:new].to_i\r
+ new = nil if new == 0\r
+ feed.mutex.synchronize do\r
+ feed.refresh_rate = new\r
+ end\r
+ else\r
+ m.reply "Don't know how to change #{params[:what]} for feeds"\r
+ return\r
+ end\r
+ m.reply "Feed changed:"\r
+ list_rss(m, {:handle => handle})\r
+ end\r
+\r