Elgg XML-RPC package
====================

This plugin implements XML-RPC interfaces for the following API definitions:

* Blogger API
* metaWeblog API
* MoveableType API

Up until version 0.4 this package dependedon the PEAR XML-RPC library. This dependancy has been resolved in version 0.6 and the package is now self-supporting.

The code should be considered beta quality right now. Not a lot of testing has been done with available clients, so if you encounter any problems, please report them to <misja.hoebe@gmail.com>. 

Clients include w.Bloggar <http://www.w.blogar.com> for Windows and DashBlog <http://dashblog.theonelab.com/> for Mac OS X.

Client configuration
--------------------

The client should be configured to send requests to the following URL: http://your_elg_server/_rpc/RPC2.php Default WordPress and MoveableType paths are also accepted and will get redirected accordingly.

The MetaWeblog API is fully usable, although not complete: categories aren't supported by Elgg at the moment, so they are of no use right now and are not being handled.

If you run into trouble
-----------------------

A debugging proxy server is included in the debug directory, it would be useful if you can provide some output from this utility. The proxy requires python to be installed on your system. Point it at the Elgg system you are using, e.g.:

./xmlrpc-debug-proxy.py elgg.net 80

Next, configure your client to send requests to localhost:8080/_rpc/RPC2.php and you will see the requests being made flashing by.

Extending Elgg XML-RPC
----------------------

As of version 0.6 it is possible to register functions via the global $RPC variable. Easiest will be to create a file to hold the functions, e.g. library_hello.php:

function hello_world($params, $method)
{
    print "hello world!";
}

Next will be to register the mappings and the library file, e.g. in your init code:

$handlers = array("say.hello" => "hello_world");

$RPC->addMapping($handlers)
$RPC->addLibrary(dirname(__FILE__)."/library_hello.php");

Word of caution
---------------

One final notice: the API's require to have your password being sent unencrypted accross the net. Please be aware of this security risk.
