読者です 読者をやめる 読者になる 読者になる

C#でTracのチケット操作

C# trac

XML-RPC.NETを利用して、C#のプログラムでTracのチケットを操作してみました。

まずは、http://www.xml-rpc.net/から、xml-rpc.net.2.1.0.zipをダウンロードします。

次にC#のプロジェクトを新規作成し、xml-rpc.net.2.1.0.zipを解凍してできたフォルダの下にあるbin/CookComputing.XmlRpcV2.dllを参照に設定に追加します。

そして、http://blog.bittercoder.com/default,date,2006-10-16.aspxから、TracのProxyのソースを持ってきます。(少し古い記事なので、最新のTracとはインタフェースがところどころ違っています。)

これで準備は完了したので、次のようなチケットを削除する処理を書いてみます。

using System;
using System.Collections.Generic;
using System.Text;
using CookComputing.XmlRpc;
using System.Net;

namespace Sample
{
    class Program
    {
        static void Main(string[] args)
        {
            TicketManager manager = new TicketManager();
            manager.Connect("http://localhost/trac/SampleProject/login/xmlrpc", "admin", "admin");
            manager.DeleteTicket(1);
        }
    }
}

しかし、実行してみるとadminでConnectしているにも関わらず、例外でForbiddenと言われてしまいました。

しかたがないので、TracのPermissionの設定で、anonymousにXML_RPCとTICKET_ADMINの権限を与えて実行すると、
(2008年1月11日追記:Connect時のアドレスが間違っていたため、認証が失敗していただけでした。)

見事、#1のチケットが削除できました!

なお、TracにはXmlRpcPluginが組み込まれている必要があります。(Trac月にはデフォルトで入っています)



さーて、これを使って、チケット駆動開発をやりやすくするようなプログラムを作ってみるかな。