gitnub のissue の一覧を取りたいなと
Issueを作成・削除・クローズできたら便利じゃないかと思った。
EvernoteやReminder.appと連携したら便利になるんじゃないかと思いついてヤってみた
ruby でgithub にアクセスするにはoctkit
gem install octkit
octkit というgithub にアクセスするためのAPIラッパーのパッケージが用意されていて手軽にアクセスできる
ログイン
ログインは専用のAPIキーを作成して埋め込んだりOauthつかったり色々できる。
require 'octokit' client = Octokit::Client.new(:login => '*USERID*', :password => 'PASSWORD');
とりあえず、ぱぱっとなにも考えずに動作確認をしたいのでパスワードを採用。
ISSUE を検索する
ISSUEの検索は、検索APIを経由するのだけれど、ISSUEの検索は、検索専用のキーワード使う。
ret = client.search_issues("first repo:takuya/MyPrivateRepos is:open");
この場合、次の検索条件でissue検索することになる。
- レポジトリ takuya/MyPriaveteRepos
- ステータス open
- タイトル first
issue の検索については、レポジトリにアクセスして、issueを・・とおもったら、ISSUE全体を検索するPermalinkキーワードを使うようです。これは盲点だった。issue の検索方法をDocument読んだり、gem document 読んだり結構探しまわった。
特定のissue のパーマリンク
検索したissue のHTMLパーマリンクを取得するには、html_urlプロパティにアクセスして取得する
ret = client.search_issues("first repo:takuya/MyPrivateRepos is:open"); pp ret.total_count pp ret.items[0].html_url
issue の新規追加
issue に新規追加するには、
repo_name = "takuya/SampleRepo" title = "ミルクを買うのを忘れないでね" ret = client.create_issue("#{repo_name}","#{title}-autoadd" ,"TODOリストからの新規ついか") # 作成したissue のpermalink ret = client.search_issues("#{title}-autoadd repo:#{repo_name} is:open") puts ret.items[0].html_url
結構簡単
検索方法が分かってしまえば、結構簡単にIssue連携ができる。どっかのアプリに組み込んでもいいかもしれない。