2012年7月30日月曜日

【ruby】RedmineのAPIを使ってみた

前回Redmineのインストールを行いましたらRedmineにはAPIも備わっているそうです

http://www.redmine.org/projects/redmine/wiki/Rest_api

というわけで今回はRedmineのAPIを使ってみたいと思います

■概要
チケットの一覧を取得して、チケットのID一覧をテキストファイルに出力します

■設定
RedmineでAPIを使うには設定が必要です
オグインした状態で管理→設定→認証と進み「RESTによるWebサービスを有効にする」にチェックをつけます
その後右上の個人設定のリンクに進むと右のメニューバーらしきところにAPIアクセスキーが出現しているので、表示を押下しアクセスキーを取得しておきましょう

またポートは3000番でアクセスするので、APIを実行するサーバからRedmineサーバへは3000番を許可しておきましょう
両方共Redmine上であるならば特に必要なないと思われます

■ソースコード
require 'net/http'
require 'rexml/document'

request = "http://hostname:3000/issues.xml?key=accessKey"; # =>先ほど取得したキーとRedmineサーバのホスト名またはIPアドレスを入力してください

def getXML(request)
  url = URI.parse(request);
  req = Net::HTTP::Get.new(url.path);
  res = Net::HTTP.start(url.host, url.port) {|http|
    http.request(req);
  }
  return res.body;
end

def parseXML(xml)
  doc = REXML::Document.new xml;
  File.open('result.txt','w'){|f|
    doc.elements.each("*/issue/id") {|element|
      f.puts(element.get_text);
    }
  }
end

xml = getXML(request);
parseXML(xml);

適当にファイル名を設定しrubyで実行するとresult.txtというファイルの中に番号のリストが記載されているはずです
doc.elements.each("*/issue/id")で実際のデータを取得しているので、この値を変更すれば取得できるXMLの値も簡単に変更できます

お試しあれ

0 件のコメント:

コメントを投稿