.NETからRedmineへアクセスするライブラリを試してみた
Redmine Clientというアプリケーションがあります。Windows(.NET)上で動作するRedmineのクライアントで、機能的には、
- チケットに費やした時間を計測する
- 時間をRedmineへ登録する
- 新しいチケットを登録する
というシンプルなものです。C#で書かれています。
このアプリケーションにはRedmineへアクセスするためのライブラリ(DLL)が添付されており、APIの仕様も公開されています。(どちらかと言うと、アプリケーションはこのライブラリのサンプル的な位置付けなのかな?)
Redmineは0.9でRESTfulになるらしいので、それまで待とうか…という気もしないではないのですが、このライブラリのFUTURE
PLANSには“Making use of Redmine 0.9 RESTfull
interface”とあり、0.9でRESTfullになったら対応する模様。
ということで、安心して?試してみました。
インストールと設定
- ここからredmineclient-0.3.0.zipをダウンロードする。
- アーカイブを解凍しNohal.Redmine.dllをVisual Studioのプロジェクトで参照設定する。
これだけです。
チケット一覧を取得するための基本的な流れ
以下のような流れでチケット一覧を取得できます。簡単。
- Redmineオブジェクトの生成
- RedmineのURLを設定(Redmine.RedmineBaseUriプロパティ)
- Redmineへのログイン(Redmine.LogInメソッド)
- プロジェクト一覧の取得(Redmine.GetProjectsメソッド)
- プロジェクトIDを指定してチケット一覧の取得(Redmine.GetIssuesメソッド)
(載せるまでも無いですが)実際のコードはこんな感じ。
[csharp]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Nohal.Redmine;
namespace RedmineTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Redmine redmine = new Redmine();
redmine.RedmineBaseUri = "RedmineのURL";
redmine.LogIn("Redmineのユーザ名",
"Redmineのパスワード");
List<Project> projects = redmine.GetProjects();
textBox1.Text = "プロジェクト一覧rn";
foreach (Project project in projects)
textBox1.Text += project.Id.ToString() + ": " +
project.Name + "rn";
textBox1.Text += "チケット一覧rn";
//
GetIssues(3)の3はプロジェクトID。本来はGetProjects()で取得したIDを指定する。
foreach (Issue issue in redmine.GetIssues(3))
textBox1.Text += issue.Id + ": " + issue.Subject +
"rn";
}
}
}
[/csharp]
ざっとAPI仕様を眺めた限りでは、条件を指定してチケットを絞り込む方法が無さそうです。
このため、指定したプロジェクトの全チケットがListで返却されますので、チケット数が数千~数万のオーダーになると厳しいかもしれませんが、チケットの登録はイケるでしょう。
C#から簡単にRedmineへアクセスできるのはいいですね。Redmineクライアントの開発をお考えての方はお試しください。