node.js で Redmine の REST API を扱う node-redmine つくりました
Redmine の API をごにょごにょしたいことが多いんだけど、毎回 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に対応するため)、という気がしている。
まぁ適当にアップデートします。
その他
- Redmine の API テスト用に初めて heroku 使ってみたけど、すごいですね。やっぱりよくできてますね。
- テスト用サイトはこちらですが、添付ファイルの永続化とかしてないし本番用に使う気はないのけど、とりあえずうごいている
- node.js のパッケージもはじめて作ったけど簡単ですね。
- npm publish で公開できるのはすごい。PHP でもこういう感じに簡単にしたいなあ。
- test は見よう見まねで書き始めたけどちゃんと書きます書きます
- node.js 楽しいです
参考にしたものたち:
- amachang/facebook-node-sdk · GitHub
- 思考の軌跡 » herokuでRedmine(1.2.1)を動かす(前編)
- 思考の軌跡 » herokuでRedmine(1.2.1)を動かす(後編)
- Bundler: The best way to manage a Ruby application's gems
- Getting Started with Rails 3.x on Heroku | Heroku Dev Center
- The Badious Bamboo Stack | Heroku Dev Center
- npm モジュールを公開してみる - Web屋の人の日記 || WebJourney 開発ログ
- Travis CI: Building a Node.js project
Redmine で Wiki 内に画像っぽいリンクが含まれていたら画像に展開する
世間ではアドベントカレンダーが大流行の昨今ですがちまちまRedmineネタとかなんですけど皆様いかがおすごしでしょうか。
なんでこれてブログ書こうと思ったのかわからないほどの小ネタだけど、こういうネタを適当にブログに書いていくということは大切だと思いました。
最近適当にTwitterとかでつぶやいて満足してしまっていますね。
Redmine の Wiki に画像っぽいリンク
Wiki、というか、チケットの説明文本文とかなんですけど。
チケットに画像の添付とかって、もはや面倒じゃないですか。
スクリーンショットとって、それをローカルに保存して、チケット作成画面から、アップロードとか...
そんなものは最近でいうと、Gyazoとか、社内用Gyazo とかで URL で投げ合っているので、ぱっと撮ってぱっと張る、が一番楽だとおもうのです。
というわけで、 ****.png とかがチケットの説明文にあったら、img タグにしてほしいなーとおもいました。
theme の JavaScript を読みこませる
このへんのことよしなにやってくれるプラグインがあると良いのかもしれないけど、いやプラグインとか面倒だしそんなもの JavaScript でいいよねってことで、theme の JS に仕込んでしまうことにします。
久々に Prototype.js 使いました。相変わらず Prototype 拡張しまくってますね!
theme 用の JavaScript は、バージョン 1.?? から、 theme のディレクトリの javascripts/theme.js に置けば読み込んでくれるようになったらしいので、そのファイルを作ります。
で、その中に↓みたいなかんじのことを書いておきます。自分で適当に枠とか CSS をあてたかったので、class も指定しておきました。
document.observe("dom:loaded", function(){ $$('#main div.wiki a').each(function(name, index){ var link = name.readAttribute('href'); if (link.match(/\.(gif|jpg|jpeg|png)$/i)) { var imgElm = new Element('img', {src: link, 'class': 'wiki-image'}); name.insert({ after: imgElm }); } }); });