# Author:: Giuseppe "Oblomov" Bilotta <giuseppe.bilotta@gmail.com>
#
# Copyright:: (C) 2007 Carter Parks
+# Copyright:: (C) 2007 Giuseppe Bilotta
#
# Users can setup their twitter username and password and then begin updating
# twitter whenever
require 'cgi'
class TwitterPlugin < Plugin
+ Config.register Config::IntegerValue.new('twitter.status_count',
+ :default => 1, :validate => Proc.new { |v| v > 0 && v <= 10},
+ :desc => "Maximum number of status updates shown by 'twitter status'")
+
def initialize
super
return false
end
+ user = URI.escape(nick)
- # TODO configurable count
- uri = "http://twitter.com/statuses/user_timeline/#{URI.escape(nick)}.xml?count=3"
+ count = @bot.config['twitter.status_count']
+ uri = "http://twitter.com/statuses/user_timeline/#{user}.xml?count=#{count}"
response = @bot.httputil.get(uri, :headers => @header, :cache => false)
debug response
return false
end
- uri = "http://#{URI.escape(@registry[m.sourcenick + "_username"])}:#{URI.escape(@registry[m.sourcenick + "_password"])}@twitter.com/statuses/update.xml"
+ user = URI.escape(@registry[m.sourcenick + "_username"])
+ pass = URI.escape(@registry[m.sourcenick + "_password"])
+ uri = "http://#{user}:#{pass}@twitter.com/statuses/update.xml"
+
+ msg = params[:status].to_s
+
+ if msg.length > 160
+ m.reply "your status message update is too long, please keep it under 140 characters if possible, 160 characters maximum"
+ return
+ end
+
+ if msg.length > 140
+ m.reply "your status message is longer than 140 characters, which is not optimal, but I'm going to update anyway"
+ end
+
+ source = "source=rbot"
+ msg = "status=#{CGI.escape(msg)}"
+ body = [source,msg].join("&")
- response = @bot.httputil.post(uri, "status=#{CGI.escape(params[:status].to_s)}", :headers => @header)
+ response = @bot.httputil.post(uri, body, :headers => @header)
debug response
if response.class == Net::HTTPOK