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.
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.