package net.sourceforge.cruisecontrol.publishers;
import net.sourceforge.cruisecontrol.CruiseControlException;
import net.sourceforge.cruisecontrol.Publisher;
import static net.sourceforge.cruisecontrol.util.ValidationHelper.assertIsSet;
import net.sourceforge.cruisecontrol.util.XMLLogHelper;
import org.jdom.Element;
import twitter4j.Twitter;
import twitter4j.TwitterException;
public class TwitterPublisher implements Publisher {
private String username;
private String password;
private final TwitterProxy proxy;
public TwitterPublisher() {
this(new RealTwitterProxy());
}
TwitterPublisher(TwitterProxy proxy) {
this.proxy = proxy;
}
public void publish(Element cruisecontrolLog) throws CruiseControlException {
XMLLogHelper helper = new XMLLogHelper(cruisecontrolLog);
proxy.twitter(helper.getProjectName() + " " + helper.getStatusMessage(), username, password);
}
public void validate() throws CruiseControlException {
assertIsSet(username, "username", getClass());
assertIsSet(password, "password", getClass());
}
public void setPassword(String s) {
password = s;
}
public void setUsername(String s) {
username = s;
}
private static class RealTwitterProxy implements TwitterProxy {
public void twitter(String message, String userName, String password) throws CruiseControlException {
Twitter twitter = new Twitter(userName, password);
try {
twitter.update(message);
} catch (TwitterException e) {
throw new CruiseControlException(e);
}
}
}
}