ブログ@kaorun55

HoloLensやKinectなどのDepthセンサーを中心に書いています。

C# で Redmine のチケットを取得する

明日の Redmine 勉強会に出席できることになったので、Redmine ネタで(笑)


以前に作った ExcelRedmineAddInブコメ(?)で、Redmine へチケットを登録するより、Redmine からチケットを取得できたほうがウケるんじゃない?というコメントがあったのでやり方を模索していた。


DB に MySQL を使っていれば C# のライブラリがあるので、それで接続できるかもと思いやってみたら意外とあっさりできてびっくり。
API がないようだし、ちょうど SQL をやりたかったので勉強がてら。
#これがはじめての SQL です^^

結果

文字化けしてるけど、チケット自体はとれる。

メインのソース

とりあえずメインだけ。こんな感じで取れればいいかな、と。

static void Main( string[] args )
{
    try {
        Redmine redmine = new Redmine( "<サーバ>", <ポート番号>, "<ユーザ名>", "<パスワード>", "<DB 名>" );
        List<Project> projects = redmine.GetProjects();
        foreach ( Project project in projects ) {
            Console.WriteLine( "==== Project ====" );
            Console.WriteLine( "ID : " + project.ID.ToString() );
            Console.WriteLine( "Name : " + project.Name );
            Console.WriteLine( "Identifier : " + project.Identifier );

            List<Issue> issues = project.GetIssues();
            foreach ( Issue issue in issues ) {
                Console.WriteLine( "==== Issue ====" );
                Console.WriteLine( "ID : " + issue.ID.ToString() );
                Console.WriteLine( "Subject : " + issue.Subject );
            }
            Console.WriteLine( "" );
        }

        List<Issue> allIssues = redmine.GetAllIssues();
        foreach ( Issue issue in allIssues ) {
            Console.WriteLine( "==== Issue ====" );
            Console.WriteLine( "ID : " + issue.ID.ToString() );
            Console.WriteLine( "Subject : " + issue.Subject );
        }

        Console.WriteLine( "正常終了" );
    }
    catch ( MySqlException ex ) {
        Console.WriteLine( ex.Message );
    }
}

まとめ

一通りの情報が取れるようになったらソースは SF.jp に上げようかと。
あとは文字化けを直す方法か。。。