.NETからRedmineへアクセスするライブラリを試してみた

/images/y6jD5-goDFXK0I.jpg photo credit: ahisgett

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になったら対応する模様。

ということで、安心して?試してみました。

インストールと設定

  1. ここからredmineclient-0.3.0.zipをダウンロードする。
  2. アーカイブを解凍しNohal.Redmine.dllをVisual Studioのプロジェクトで参照設定する。

これだけです。

チケット一覧を取得するための基本的な流れ

以下のような流れでチケット一覧を取得できます。簡単。

  1. Redmineオブジェクトの生成
  2. RedmineのURLを設定(Redmine.RedmineBaseUriプロパティ)
  3. Redmineへのログイン(Redmine.LogInメソッド)
  4. プロジェクト一覧の取得(Redmine.GetProjectsメソッド)
  5. プロジェクト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クライアントの開発をお考えての方はお試しください。


See also