Reworked my XMPP code, which was still specific to push notification, into a more generic XMPP client, that's based on a very generic NetMessager class, that the rest of the assistant can access without knowing anything about XMPP.
Got pair requests flowing via XMPP ping, over Google Talk! And when the webapp receives a pair request, it'll pop up an alert to respond. The rest of XMPP pairing should be easy to fill in from here.
To finish XMPP pairing, I'll need git pull over XMPP, which is nontrivial, but I think I know basically how to do. And I'll need some way to represent an XMPP buddy as a git remote, which is all that XMPP pairing will really set up.
It could be a git remote using an xmpp:user@host
URI for the git url, but
that would confuse regular git to no end (it'd think it was a ssh host),
and probably need lots of special casing in the parts of git-annex that
handle git urls too. Or it could be a git remote without an url set, and
use another config field to represent the XMPP data. But then git wouldn't
think it was a remote at all, which would prevent using "git pull
xmppremote" at all, which I'd like to be able to use when implementing git
pull over XMPP.
Aha! The trick seems to be to leave the url unset in git config, but temporarily set it when pulling:
GIT_SSH=git-annex git git -c remote.xmppremote.url=xmpp:client pull xmppremote
Runs git-annex with "xmpp git-upload-pack 'client'".. Just what I need.
It seems that xmpp::user@host (with double colon) would cause git to try to use a remote-xmpp helper. Wouldn't it be a way to have the remote address (if not really URL) set and not be treated as ssh?