= Trac XML-RPC Plugin = == Description == This plugin allows Trac plugins to export select parts of their interface via XML-RPC. It also includes some exported functions for manipulating tickets, with plans to include interfaces to other parts of Trac's API. The XML-RPC URI suffix is /RPC2. For example, for TracHacks the URI would be http://trac-hacks.swapoff.org/RPC2. If the HTTP request to this URI is a normal HTTP request, the XmlRpcPlugin will list all exported functions that the current user has permission to use. == Installation == Unfortunately, due to some issues with mod_pythons !FieldStorage emultation layer, this plugin requires the patch in [trac-ticket:2509 #T2509] to be applied to your Trac installation. Once this patch has been applied, install in the same manner as any other Trac plugin: {{{ # python setup.py bdist_egg # cp dist/*.egg /srv/trac/env/plugins }}} == Bugs/Feature Requests == Existing bugs and feature requests for XmlRpcPlugin are [report:9?COMPONENT=XmlRpcPlugin here]. If you have any issues, create a [http://trac-hacks.swapoff.org/newticket?component=XmlRpcPlugin&owner=athomas new ticket]. == Download == Download the zipped source from [download:xmlrpcplugin here]. == Source == You can check out the source for XmlRpcPlugin from Subversion at http://trac-hacks.swapoff.org/svn/xmlrpcplugin. == Example == === End-User Usage === Obtain a list of XML-RPC exported functions available to my user: {{{ #!python import xmlrpclib server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac-dev/RPC2") print server.tracrpc.api.list_xmlrpc_functions() }}} List all tickets that are owned by athomas: {{{ #!python import xmlrpclib server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac-dev/RPC2") print server.tracrpc.ticket.query_tickets("owner=athomas") }}} === API Usage === Export a "hello world' function: {{{ #!python from tracrpc.api import IXMLRPCProvider from trac.core import Component, implements class HelloWorld(Component): implements(IXMLRPCProvider) def hello_world(self): return "Hello world" def get_xmlrpc_functions(self): yield ('WIKI_VIEW', self.hello_world) }}} == Author/Contributors == '''Author:''' [wiki:athomas] [[BR]] '''Contributors:''' [[TagIt(plugin,athomas,alpha,0.9)]]