My team at work has been considering trialing the Campfire app for intra-team communication. I've played with it a bit and so far I like it (a lot), but as with anything, adoption by the team is going to be the make-or-break factor.
I found myself wishing, though, that I had a way to post messages and notifications to Campfire chatrooms from the command-line or from Ant build scripts, used by our continuous integration system. There's a Ruby Campfire API already, but that doesn't really help me. So I wrote a simple Java API this weekend that posts messages over HTTP, with the self-imposed requirement it should have ZERO external dependencies outside the JRE. It's up here on Github and called CampfireJ; license is WTFPL.
Programmatic usage should be pretty easy to figure out, and the javadocs will be generated by the build, but what I want to call attention to here are the command-line interface and the Ant task.
Command-Line
Once you have campfirej.jar, you can use it directly as a command-line app like this:
$ java -jar campfirej.jar -u user -s subdomain -p password -r "Room 1" -m "Hello world" [--paste]
This will send the message "Hello world" to the room "Room 1" on your Campfire subdomain. I'm using this from a script for Out-of-Office notifications, you can easily find other uses. I think a useful addition to the program would be to allow omitting the -m argument and reading stdin for messages, that shouldn't be too hard to add.
Ant script
The real reason for hacking this together was so I could send Campfire notifications from a CruiseControl build/CI system, so I had to support sending from Ant.
Here's a sample invocation from a build script:
<project name="campfirej-ant-test">
<taskdef
name="campfirej"
classname="ca.softwareengineering.campfirej.ant.CampfireJEcho"
classpath="_dist/campfirej.jar"/>
<target name="test">
<campfirej
user="ant@example.com"
password="mypassword"
subdomain="campfirej"
room="Room 1"
failonerror="false"
paste="false"
message="Hello from ant" />
</target>
</project>
Cheers, and contact me with desired improvements, the library is just a few hours old so obviously it's not fully-featured yet.