2017-07-11 10 views
2

特にGitHub担当者のプルリクエストと問題の数を取得したいと考えています。現時点で私が使っている方法は本当に不器用です。 octokitの宝石と次のコードを使用してOctokit GitHub API

:受信

# Builds data that is sent to the API 
def request_params 
    data = { } 

    # labels example: "bug,invalid,question" 
    data["labels"] = labels.present? ? labels : "" 

    # filter example: "assigned" "created" "mentioned" "subscribed" "all" 
    data["filter"] = filter 

    # state example: "open" "closed" "all" 
    data["state"] = state 

    return data 
end 


Octokit.auto_paginate = true 
github = Octokit::Client.new(access_token: oauth_token) 
github.list_issues("#{user}/#{repository}", request_params).count 

データは、メモリの観点で非常にその非常にineficient非常に大きいです。私はいくつの問題があるのか​​、Xの問題(フィルタ/状態/ラベルに基づいて)だけの問題に関するデータは必要ありません。

解決策は考えましたが、実装できませんでした。 基本的には、ヘッダーを取得する1つの要求を行い、ヘッダーには最後のページへのリンクが必要です。最後のページにもう一度リクエストして、問題の数を確認します。

​​

しかし、私はoctokit Authentificated Clientから要求ヘッダー情報を取得する方法を見つけられませんでした。 Octokitなしで簡単に行うことができれば、私はうれしくそれを使用します。

注:プルリクエストの数が非常に多く、上記のコードでHerokuでR14エラーが生成されるため、この問題を修正したいと考えています。

ありがとうございました!

答えて

3

私はGitHub APIを使用し、per_pageフィルタを使用してページに表示するPRの数を制限するのが簡単だと思います。たとえば、Repo OneGet/onegetのすべてのPRを見つけるには、https://api.github.com/search/issues?q=repo:OneGet/oneget+type:pr&per_page=1を使用します。 JSONレスポンスには、total_countというフィールドがあり、PRの総数をカウントします。それに1つの問題だけがリストされているので、回答は比較的軽いでしょう。 Ref:Search Issues

+1

ありがとうございました!私はまったく同じソリューションを見つけ出し、完璧に動作します。 –