Symfoware

Symfowareについての考察blog

RubyからREST API経由でRedmineにチケットを登録する(XML,JSON使用)

PythonからREST API経由でRedmineにチケットを登録してみました。
PythonからREST API経由でRedmineにチケットを登録する(XML,JSON使用)

Rubyでも同じ事をやってみようと思います。



APIキーの準備



登録にはAPIキーが必要です。
PythonからREST API経由でRedmineにチケットを登録する(XML,JSON使用)

こちらと同様の手順でAPIキーを取得しておきます。




XMLによる登録



試行錯誤した結果、こんなプログラムになりました。


  1. # -*- coding : utf-8 -*-
  2. require 'net/http'
  3. require 'uri'
  4. # 個人設定画面に表示されているAPIキー
  5. api_key = 'ea87faaba9549b5fdbea7655bf7de323cd6c118e'
  6. # 登録用のデータ
  7. xml = <<XML
  8. <issue>
  9.     <project_id>test_project</project_id>
  10.     <subject>Rubyから自動登録テスト</subject>
  11.     <description>チケットの詳細です</description>
  12.     <tracker_id>2</tracker_id>
  13. </issue>
  14. XML
  15. # APIのURL
  16. # 今回、RedmineのURLはhttp://192.168.1.102/redmine/
  17. # サブディレクトリで公開している
  18. uri = URI.parse("http://192.168.1.102/redmine/issues.xml")
  19. Net::HTTP.start(uri.host, uri.port) do |http|
  20.     #リクエストインスタンス生成
  21.     request = Net::HTTP::Post.new(uri.path)
  22.     #ヘッダー部
  23.     request.set_content_type("text/xml")
  24.     request["X-Redmine-API-Key"] = api_key
  25.     
  26.     #ボディ部
  27.     request.body = xml
  28.     
  29.     #送信
  30.     response = http.request(request)
  31. end




実行してみると、あっさり登録に成功。

378_01.png






JSONによる登録



JSON形式での登録も試してみます。


  1. # -*- coding : utf-8 -*-
  2. require 'net/http'
  3. require 'uri'
  4. require 'json'
  5. # 個人設定画面に表示されているAPIキー
  6. api_key = 'ea87faaba9549b5fdbea7655bf7de323cd6c118e'
  7. # 登録用のデータ
  8. data = {}
  9. issue = {}
  10. issue['project_id'] = 'test_project'
  11. issue['subject'] = 'Rubyから自動登録テスト(JSON)'
  12. issue['description'] = '登録するチケットの詳細'
  13. issue['tracker_id'] = 2
  14. data['issue'] = issue
  15. # 連想配列からJSONな文字列に変換
  16. issue_json = JSON.generate(data)
  17. # APIのURL
  18. # 今回、RedmineのURLはhttp://192.168.1.102/redmine/
  19. # サブディレクトリで公開している
  20. # jsonの場合は、拡張子に「json」を指定
  21. uri = URI.parse("http://192.168.1.102/redmine/issues.json")
  22. Net::HTTP.start(uri.host, uri.port) do |http|
  23.     #リクエストインスタンス生成
  24.     request = Net::HTTP::Post.new(uri.path)
  25.     #ヘッダー部
  26.     request.set_content_type("application/json")
  27.     request["X-Redmine-API-Key"] = api_key
  28.     
  29.     #ボディ部
  30.     request.body = issue_json
  31.     
  32.     #送信
  33.     response = http.request(request)
  34.     #ret = JSON.parse(response.body)
  35.     #puts ret['errors']
  36. end




JSON形式でも登録出来ました。

378_02.png





【参考URL】

library net/http

module JSON

Ruby 1.9 で JSON を扱う
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/03/21(金) 13:30:26|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<RubyからREST API経由でRedmineに添付ファイルを登録する(XML,JSON使用) | ホーム | Ruby 1.9.3でIMAP4(outlook.com)のメールを受信する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1358-6e399a23
この記事にトラックバックする(FC2ブログユーザー)