Changes between Version 63 and Version 64 of XmlRpcPlugin


Ignore:
Timestamp:
Aug 12, 2008 11:33:13 AM (6 years ago)
Author:
anonymous
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • XmlRpcPlugin

    v63 v64  
    1 [[PageOutline]] 
    2 = Trac XML-RPC Plugin = 
    3  
    4 == ''Note about 0.11 compatibility'' == 
    5  
    6 ''You can [query:component=XmlRpcPlugin&release=0.11 check out the tickets] that users have created, there may be a solution to your problem.'' Especially #1075 states that it works out of the box with Eclipse-3.3 and Mylyn. 
    7  
    8 == Description == 
    9  
    10 This plugin allows Trac plugins to export select parts of their interface via XML-RPC. 
    11  
    12 It also includes some exported functions for manipulating tickets, with plans to include interfaces to other parts of Trac's API. 
    13  
    14 The browsable XML-RPC URI suffix is /xmlrpc, however most XML-RPC clients should use the authenticated URL suffix  
    15 /login/xmlrpc as this is correctly authenticated by Trac. 
    16  
    17 '''Note''': if you do want to use /xmlrpc and unauthenticated access, you must grant the XML_RPC permission to the 'anonymous' user. 
    18  
    19 [http://www.jspwiki.org/Wiki.jsp?page=WikiRPCInterface2 WikiRPC API] is complete, mostly thanks to [wiki:mgood]. 
    20  
    21 Ticket API is also complete, with the following types exported: component, version, milestone, type, status, resolution, priority and severity. 
    22  
    23 For example, for TracHacks the URIs are http://trac-hacks.org/xmlrpc and http://trac-hacks.org/login/xmlrpc (must be authenticated). 
    24  
    25 == Todo == 
    26  
    27 Outstanding tasks are roadmap, timeline, user management (e.g. get a (filtered) user list to assign a task in [http://eclipse.org/mylyn/ mylyn]), plugin management (?)...plus probably more. 
    28  
    29 == Installation == 
    30 This plugin ''requires'' at least Trac 0.10. It will not work with Trac 0.9.x or earlier. 
    31  
    32 Install in the same manner as any other Trac plugin: 
    33 {{{ 
    34 # python setup.py bdist_egg 
    35 # cp dist/*.egg /srv/trac/env/plugins 
    36 }}} 
    37  
    38 or if you want it to be installed for all Trac environments: 
    39  
    40 {{{ 
    41 # easy_install /path/to/unpacked/xmlrpcplugin.zip/0.10 
    42 }}} 
    43  
    44 (You might want to use ''easy_install -Z'' so that it doesn't need to be unpacked when it's called.) 
    45  
    46 You will also probably need to enable the plugin in your environments trac.ini: 
    47  
    48 {{{ 
    49 [components] 
    50 tracrpc.* = enabled 
    51 }}} 
    52  
    53 == Bugs/Feature Requests ==  
    54  
    55 Existing bugs and feature requests for XmlRpcPlugin are [query:status!=closed&component=XmlRpcPlugin&order=priority here]. If you have any issues, create a [/newticket?component=XmlRpcPlugin&owner=athomas new ticket]. 
    56  
    57 == Troubleshooting == 
    58  
    59 === Problems when AccountManagerPlugin is enabled === 
    60 If you have the AccountManagerPlugin enabled and you followed their advise/example to disable the standard login module with 
    61 {{{ 
    62 [components] 
    63 trac.web.auth.LoginModule = disabled 
    64 }}} 
    65 the /login/xmlrpc URL for authorized access will not work as expected. Every access will look like anonymous access. 
    66  
    67 You can use the HttpAuthPlugin to correct this. 
    68  
    69 === Problems with ''Digest'' HTTP authentication === 
    70  
    71 The `xmlrpclib.ServerProxy` client - as demonstrated in the following examples - will not work with a ''Digest''-based HTTP authentication: you need to set up a ''Basic'' HTTP authentication on server side to make the examples work.  
    72  
    73 If you use the standalone Trac daemon, this means that you cannot use the `tracd -a` option (htdigest authentication file). Use `trac --basic-auth` (htpasswd authentication file) instead. 
    74  
    75 === Problems with mod_python, Apache, python 2.4 === 
    76  
    77 XmlRpcPlugin might not work with Apache and python 2.4 as explained in [http://trac.edgewall.org/wiki/TracInstall#Requirements TracInstall]. Use python 2.5 if you want to run Trac with mod_python.  
    78  
    79 == Download and Source == 
    80  
    81 Download the [download:xmlrpcplugin zipped source], check out the [/svn/xmlrpcplugin source using Subversion] or [source:xmlrpcplugin browse the source] with Trac. 
    82  
    83 == Example == 
    84  
    85 === Python End-User Usage === 
    86  
    87 Obtain and print a list of XML-RPC exported functions available to my user: 
    88  
    89 {{{ 
    90 #!python 
    91 import xmlrpclib 
    92  
    93 server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac-dev/login/xmlrpc") 
    94 for method in server.system.listMethods(): 
    95   print method 
    96   print '\n'.join(['  ' + x for x in server.system.methodHelp(method).split('\n')]) 
    97   print 
    98   print 
    99 }}} 
    100  
    101 The same example using `system.multicall()`. This reduces network and server 
    102 load by compacting all of the `system.methodHelp()` calls into one HTTP POST. 
    103  
    104 {{{ 
    105 #!python 
    106 import xmlrpclib 
    107  
    108 server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac/devel/login/xmlrpc") 
    109  
    110 multicall = xmlrpclib.MultiCall(server) 
    111 for method in server.system.listMethods(): 
    112     multicall.system.methodHelp(method) 
    113  
    114 for help in multicall(): 
    115     lines = help.splitlines() 
    116     print lines[0] 
    117     print '\n'.join(['  ' + x for x in lines[2:]]) 
    118     print 
    119  
    120 }}} 
    121  
    122 List all tickets that are owned by athomas, using the XML-RPC multicall system  
    123 to issue multiple RPC calls with one HTTP request: 
    124  
    125 {{{ 
    126 #!python 
    127 import xmlrpclib 
    128  
    129 server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac/devel/login/xmlrpc") 
    130  
    131 multicall = xmlrpclib.MultiCall(server) 
    132 for ticket in server.ticket.query("owner=athomas"): 
    133     multicall.ticket.get(ticket) 
    134 print map(str, multicall()) 
    135 }}} 
    136  
    137 Access the Wiki with [http://www.jspwiki.org/Wiki.jsp?page=WikiRPCInterface2 WikiRPC] 
    138 {{{ 
    139 #!python 
    140 import xmlrpclib 
    141  
    142 server = xmlrpclib.ServerProxy("http://athomas:password@localhost/trac-dev/login/xmlrpc") 
    143  
    144 # print the content of WikiStart 
    145 print server.wiki.getPage("WikiStart") 
    146  
    147 # print WikiStart as HTML 
    148 print server.wiki.getPageHTML("WikiStart") 
    149  
    150 # write to the SandBox page from a text file 
    151 sandbox_content = file("sandbox.txt").read() 
    152 server.wiki.putPage("SandBox", sandbox_content, {"comment": "testing the WikiRPC interface"}) 
    153 }}} 
    154  
    155 Add an attachment to WikiStart: 
    156  
    157 {{{ 
    158 #!python 
    159 import xmlrpclib 
    160  
    161 server = xmlrpclib.ServerProxy("http://athomas:password@localhost:8080/trunk/login/xmlrpc") 
    162  
    163 server.wiki.putAttachment('WikiStart/t.py', xmlrpclib.Binary(open('t.py').read())) 
    164 }}} 
    165  
    166 === Using from C# === 
    167  
    168 See DotNet. 
    169  
    170 === Using from Java === 
    171  
    172 See [/attachment/wiki/XmlRpcPlugin/trac_xml_rpc_example_java.zip?format=raw this example zip file] 
    173  
    174 === API Usage === 
    175  
    176 See the [source:xmlrpcplugin/0.10/tracrpc/api.py source] for details. 
    177  
    178 == Screenshot == 
    179  
    180 If the HTTP request to this URI is not XML, the XmlRpcPlugin will list all exported functions that the current user has permission to use. 
    181  
    182     [[Image(tracrpc.png)]] 
    183  
    184 == Change Log == 
    185  
    186 [[ChangeLog(/xmlrpcplugin, 5)]] 
    187  
    188 == Author/Contributors == 
    189  
    190 '''Author:''' [wiki:athomas] [[BR]] 
    191 '''Contributors:''' [wiki:mgood] [[BR]] 
    192  
    193 [[TagIt(plugin,athomas,mgood,alpha,0.10)]] 
    194  
    195  
     1gggg