C#からTracを操作する
Visual Studio 2005で、プロジェクトはXML RPCという名前で作ったと仮定。
Tracのプロジェクトはhttp://192.168.1.11/trac/SampleProjectでアクセス可能で、ユーザ名は"user"、パスワードは"pass"でパーミッションは面倒だからTRAC_ADMINを持ってると仮定*1。
まず、http://xml-rpc.net/からXML-RPC.NETを取得し、ビルド*2してbinに入っているdll*3をプロジェクトのフォルダにコピーし、参照を追加しておく。
次に、チケット操作用のインターフェイスを記述する。
using System; ... using CookComputing.XmlRpc; namespace XML_RPC { [XmlRpcUrl("http://localhost/trac/login/xmlrpc")] public interface ITicket : IXmlRpcProxy { // http://192.168.1.11/trac/SampleProject/xmlrpcにアクセスすると、使用できる操作が一覧できる。 // その中の最後らへん、ticket - An interface to Trac's ticketing system.の中に、 // int ticket.create(string summary, string description, struct attributes={}, boolean notify=False) // があったので、そのまま使用してみた。 [XmlRpcMethod("ticket.create")] int Create(string summary, string description, XmlRpcStruct attributes, bool notify); } }
最後にこれを使用して、ためしにチケットを登録してみる。
//ITicket ticket = (ITicket) XmlRpcProxyGen.Create(typeof(ITicket)); ITicket ticket = XmlRpcProxyGen.Create<ITicket>(); ticket.Url = "htt://192.168.1.11/trac/SampleProject/login/xmlrpc"; ticket.PreAuthenticate = true; ticket.Credentials = new NetworkCredential("user", "pass"); ticket.Create("サマリー", "説明", new XmlRpcStruct(), false);
これを実行してみると、チケットが登録されてた!すげー!簡単だー!
XML-RPCはいまいちよくわかってなかったけど、Remote Procedure Callね。まんまじゃん。
と、言うことで、VS2005用のTracアドインでも作ってみようかな。
VSTracを試してみたら、今の段階では「見る」だけしかできないんだもんなぁ。
せめてチケットの登録とチケットの解決はできないと、お話にならない。