wiki:XmlRpcPlugin

Version 5 (modified by Alec Thomas, 18 years ago) (diff)

--

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:

http://trac-hacks.swapoff.org/attachment/wiki/XmlRpcPlugin/tracrpc.jpg?format=raw

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

If you have any issues, create a 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:

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:

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:

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: athomas
Contributors:

TagIt(plugin,athomas,alpha,0.9)?

Attachments (2)

Download all attachments as: .zip