The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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 <Exception::Class> 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, `<ivan@bessarabov.ru>'

SOURCE CODE
    The source code for this module is hosted on GitHub
    http://github.com/bessarabov/Trac-RPC