- blogs:
- cles::blog
XML-RPCを使ってTracのチケットに添付ファイルを投げ込む(Perl編)
trac
perl
仕事場に導入したTracはかなり活用されてきていて、導入した自分としては嬉しい限りです。僕はコンソール作業の記録をしばしばTracに転記しているのですが、そうするとコンソールとウェブブラウザを行ったり来たりしなければならないので、それがちょっと面倒になってきました。
ということで、ブラウザを開かずに、Linux上のコンソールのコマンドで特定のチケットに添付ファイルを投げ込むスクリプトを書いてみました。Tracには他のシステムと連携するためにXML-RPCというインタフェイスが用意されているので、これをPerlから叩いてみます。XML-RPCについてはNucleus関連の開発でも散々いじったので自分としてはPHPで書くのが一番得意なのですが、今回はPerlで開発することにします。
† チケットに添付ファイルを投げ込むスクリプト
ということでサクッと書いてみました。
本当はもうちょっとちゃんと引数のバリデーションしたりとか、チケットの存在確認とかした方がいいと思うんですが、プライベート用なのでこれで十分です。
tracAttachmentPost.pl
# 使うときには()の部分とか、testserver.example.comを環境に合わせて書き替える必要があります。。。。
使い方は下記のようにチケットID(ここでは100)とファイル名(ここではexample.txt)を指定すると、チケットにファイルが添付されます。処理が成功した場合には、ファイル名が表示されるはずです。
XML-RPCを投げるにあたってBasic/Digest認証をパスする必要があるので、URLをhttp://user:password@testserver:80/・・・・というようにしてリクエストを投げてみたものの「401 Authorization Required. 」で弾かれてしまって少しハマりましたが、XMLRPC::Liteのソースを追いかけていってproxy()の第2引数以降はLWP::UserAgentへの引数になるらしいということがわかったので、credentialsを使う事で認証をパスすることができるようになりました。
† 2009/12/13追記
Ruby編も書きました。
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/3065
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
2 . アーロンチェアのポスチャーフィットを修理(185)
3 . 福岡銀がデマの投稿者への刑事告訴を検討中(179)
4 . RT810 の DHCP サーバを WPAD に対応させる(169)
5 . GitHub が全ての公開リポジトリへのシークレットスキャンを有効に(127)