XHTML-IM over TLS via Erlang
jabberdemo.erl constructs and sends an XHTML-IM message over TLS using xmerl and Erlang. Tested with gaim and ejabberd.
The creation of the Session
data structure is the bulk of the code. xmerl:export_simple
and ssl:send
pretty much take care of all the rest.
A small utility function named export_text
exports just the text nodes from an XHTML data structure, which is sent as a fallback to non-XHTML-IM aware clients. Of course, xmerl supports more patterns, but for the moment, this is enough for my purposes.
Longer term, this needs to be split up into a module which spawns threads and exports separate interfaces for things like authenticating, sending messages to a server, and registering callbacks for presence changes.