# This plugin allows you to tweet your build in twitter.com # #
Project.configure do |project|
# ...
# project.twitter_notifier.email = 'your_email@twitter.com'
# project.twitter_notifier.password = 'twitter_password'
# ...
# end
#
require 'uri'
require 'net/http'
class TwitterNotifier
attr_accessor :email, :password
def initialize(project = nil)
CruiseControl::Log.event("TwitterNotifier initialized")
@email = ''
@password = ''
end
def build_finished(build)
if build.failed?
notify("Build #{build.label} - FAILED")
else
notify("Build #{build.label} - OK")
end
end
private
def notify(message)
CruiseControl::Log.event("TwitterNotifier notifying")
url = URI.parse('http://twitter.com/statuses/update.xml')
req = Net::HTTP::Post.new(url.path)
req.basic_auth @email, @password
req.set_form_data({'status' => message})
res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }
res.value
CruiseControl::Log.event("Sent tweet to #{@account}")
rescue
CruiseControl::Log.event("Tweet not sent to #{@account}")
raise
end
end
Project.plugin :twitter_notifier