Ich möchte die Anzahl der Pull-Anfragen und Probleme für eine besonders GitHub rep erhalten. Im Moment ist die Methode, die ich benutze, wirklich tollpatschig.Octokit GitHub API
Mit dem octokit Juwel und den folgenden Code:
# 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
Die empfangenen Daten ist extrem groß, so dass ihre sehr ineficient in Bezug auf Speicher. Ich brauche keine Daten über die Probleme nur, wie viele es gibt, X-Probleme (basierend auf den Filtern/Staat/Etiketten).
Ich dachte an eine Lösung, konnte sie aber nicht implementieren. Grundsätzlich: 1 Anfrage, um den Header zu bekommen, in der Kopfzeile sollte es einen Link zur letzten Seite geben. Dann machen Sie eine weitere Anfrage auf die letzte Seite und überprüfen Sie, wie viele Probleme es gibt. Dann können wir berechnen:
count = (number of pages * (issues-per-page - 1)) + issues-on-last-page
Aber ich habe nicht herausgefunden, wie Request-Header Informationen aus octokit authentifiziert Clients zu erhalten. Wenn es einen einfachen Weg gibt, es ohne Octokit zu machen, werde ich es gerne benutzen.
Hinweis: Ich möchte dieses Problem beheben, da die Anzahl der Pull-Anforderungen ziemlich hoch ist und der obige Code R14-Fehler auf Heroku generiert.
Vielen Dank!
Vielen Dank für die Antwort! Ich habe genau dieselbe Lösung gefunden, funktioniert perfekt. –