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

肉とビールとパンケーキ by @sotarok

少し大人になった「肉とご飯と甘いもの」

node.js で Redmine の REST API を扱う node-redmine つくりました

RedmineAPI をごにょごにょしたいことが多いんだけど、毎回 PHP ってのも芸が無いので年始の休みのときに遊びはじめてみた node.js / JavaScript のモジュールにしてみた。


何でもある npm になかったので、node.js の練習がてら作ってみました感じです。この記事ではバージョン0.2.0 です。
まだ作ってみたばっかで全然使ってないから API とかは変わるかもしれません。すいません。

インストール

npm だと、

$ npm install redmine

です。それ以外の方法はよく知りません。

使い方

example においてあるけど、

var Redmine = require('redmine');

var redmine = new Redmine({
  host: 'vivid-winter-3808.heroku.com',
  apiKey: 'xxxxxxxxxxxxxxxxx',
});

redmine.getIssues({project_id: 1}, function(err, data) {
  if (err) {
    // error
    console.log("Error: " + err.message);
    return;
  }

  console.log(data);

  // { offset: 0,
  //   total_count: 3,
  //   issues:
  //    [ { updated_on: '2012/01/13 03:18:30 +0900',
  //        priority: [Object],
  //        status: [Object],
  //        tracker: [Object],
  //        project: [Object],
  //        description: 'Test issue description',
  //        subject: 'This is test issue on 1326392307929',
  //        done_ratio: 0,
  //        created_on: '2012/01/13 03:18:30 +0900',
  //        start_date: '2012/01/13',
  //        author: [Object],
  //        id: 3 },
  // ...
});

的な感じ。
久々に Redmine の REST API 調べてたら Issues 以外にも API 増えてたから必要に応じて対応しようかな。
とりあえず Issues しか対応してないです。

APIとか

Redmine.getIssues(criteria, callback)
Redmine.postIssue(issue, callback)
Redmine.updateIssue(id, issue, callback)
Redmine.deleteIssue(id, callback)

いやこれやすいか微妙だからすぐかえるかも。なんたって 0.2.0 だから...。

なんとなく、

Redmine.issue.get(criteria, callback)
...
Redmine.issue.delete(id, callback)

とかのほうが使いやすいのでは(というか他のAPIに対応するため)、という気がしている。

まぁ適当にアップデートします。

その他

  • RedmineAPI テスト用に初めて heroku 使ってみたけど、すごいですね。やっぱりよくできてますね。
    • テスト用サイトはこちらですが、添付ファイルの永続化とかしてないし本番用に使う気はないのけど、とりあえずうごいている
  • node.js のパッケージもはじめて作ったけど簡単ですね。
    • npm publish で公開できるのはすごい。PHP でもこういう感じに簡単にしたいなあ。
  • test は見よう見まねで書き始めたけどちゃんと書きます書きます
  • node.js 楽しいです


参考にしたものたち: