NAME Trac::RPC - access to Trac via XML-RPC Plugin DESCRIPTION Trac is a great project management and bug/issue tracking system. http://trac.edgewall.org/. Trac by itself does not provide API. But there is a plugin that adds this functionality. It is called XmlRpcPlugin http://trac-hacks.org/wiki/XmlRpcPlugin. Trac::RPC is the libraty to use trac functions from perl programs through XmlRpcPlugin. On CPAN there is one more module to interact with trac instanse. It is called Net::Trac. It parses webforms and it does not need the presense of XmlRpcPlugin. This is the very early version of Trac::RPC. It has only several API methods implemented, but it is a skeleton and it is very easy to add methods implementation. Plese fork this module on github. SYNOPSIS my $params = { realm => "My Trac Server", # This is a string that shows in the # box with login/password with # basic authorization. # It should be written exactly user => "rpc", password => "secret", host => "https://trac.example.com/test/login/rpc", # If the trac works without authentication # you should use a bit different url: # host => "https://trac.example.com/test/rpc", }; my $tr = Trac::RPC->new($params); print $tr->get_page("WikiStart"); $tr->put_page("WikiStart", "Sample text"); More on synopsion on appropriate pages: Trac::RPC::System Trac::RPC::Wiki There are also some high level tools to work with trac Trac::RPC::Tools Exceptions Trac::RPC uses to work with extraordinary situations. Simple example: eval { $page = $tr->get_page("NoSuchPage"); }; if ( Exception::Class->caught('TracExceptionNoWikiPage') ) { print "Wiki page not found\n"; } Files lib/ `-- Trac |-- RPC | |-- Base.pm # Abstact base class for all Trac::RPC classes | |-- Exception.pm # Trac::RPC exceptions declarations (uses Exception::Class) | |-- System.pm # Implementation of all system.* API methods | |-- Tools.pm # High level tools | `-- Wiki.pm # Implementation of all wiki.* API methods `-- RPC.pm IMPLEMENTED METHODS For now the module has very few API methods implemented. Here is the list: system.listMethods wiki.getAllPages wiki.getPage wiki.putPage NOT IMPLEMENTED METHODS And here is the list of all API methods that needed to be implementd: system.multicall system.methodHelp system.methodSignature system.getAPIVersion ticket.query ticket.getRecentChanges ticket.getAvailableActions ticket.getActions ticket.get ticket.create ticket.update ticket.delete ticket.changeLog ticket.listAttachments ticket.getAttachment ticket.putAttachment ticket.deleteAttachment ticket.getTicketFields ticket.status.getAll ticket.status.get ticket.status.delete ticket.status.create ticket.status.update ticket.component.getAll ticket.component.get ticket.component.delete ticket.component.create ticket.component.update ticket.version.getAll ticket.version.get ticket.version.delete ticket.version.create ticket.version.update ticket.milestone.getAll ticket.milestone.get ticket.milestone.delete ticket.milestone.create ticket.milestone.update ticket.type.getAll ticket.type.get ticket.type.delete ticket.type.create ticket.type.update ticket.resolution.getAll ticket.resolution.get ticket.resolution.delete ticket.resolution.create ticket.resolution.update ticket.priority.getAll ticket.priority.get ticket.priority.delete ticket.priority.create ticket.priority.update ticket.severity.getAll ticket.severity.get ticket.severity.delete ticket.severity.create ticket.severity.update wiki.getRecentChanges wiki.getRPCVersionSupported wiki.getPageVersion wiki.getPageHTML wiki.getPageHTMLVersion wiki.getPageInfo wiki.getPageInfoVersion wiki.listAttachments wiki.getAttachment wiki.putAttachment wiki.putAttachmentEx wiki.deletePage wiki.deleteAttachment wiki.listLinks wiki.wikiToHtml search.getSearchFilters search.performSearchend AUTHOR Ivan Bessarabov, `' SOURCE CODE The source code for this module is hosted on GitHub http://github.com/bessarabov/Trac-RPC