2013-10-11 5 views
14

Ich bin mit der GitHub API vertraut http://developer.github.com/v3/ Ich probiere Dinge sowohl mit dem RESTClient Plugin für Firefox als auch mit dem curl Kommandozeilen Tool aus.So löschen Sie ein GitHub Repo mit der API

Ich habe herausgefunden, wie man ein Repo mit der API erstellt, aber ich kann nicht scheinen, es mit der API zu löschen.

Nach der Hilfe hier: http://developer.github.com/v3/repos/#delete-a-repository Ich muss eine DELETE-Anfrage wie folgt senden:

curl -X DELETE -H 'Authorization: token xxx' https://api.github.com/repos/:owner/:repo 

Die Hilfe ist nicht festgelegt, und ich bin nicht sicher, was sie damit meine: Besitzer: Repo - ob es sich um die Namen oder die IDs, aber ich habe beide Namen und IDs in mehreren Kombinationen ohne Erfolg ausprobiert. Was ich als Antwort erhalten habe, ist:

404 Not Found 

Was fehlt mir?

+0

Wenn Sie 'github.com/foo/bar', dann': owner' 'foo' und ': repo' ist' bar'. – Stijn

+0

Danke, aber immer noch 'curl -X DELETE -H 'Authorization: token xxx' https: // api.github.com/repos/foo/bar' funktioniert nicht –

+0

Was tun Sie mit gefälschten Anmeldeinformationen erhalten und ein nicht existierendes Repo? Ich bekomme das: '$ curl -X DELETE -H 'Autorisierung: Token xxx' https://api.github.com/repos/foo/bar { " Nachricht ":" Bad Anmeldeinformationen ", " Documentation_url ": "http://developer.github.com/v3" } ' – Stijn

Antwort

18

Wenn Sie das Token erstellt Ihnen die Applications page mit sind durch, dann wird dieses Token haben diese scopes: user, public_repo, repo, gist. Sie können dies überprüfen, indem Sie einen API-Anfrage mit diesem Token machen und Blick auf die Antwort HTTP-Header:

curl -v -H 'Authorization: token xxx' https://api.github.com

Suchen Sie nach der X-OAuth-Scopes Response-Header, die die Liste der Bereiche haben:

X-OAuth-Scopes: user, public_repo, repo, gist

Um jedoch ein Repository zu löschen, die token needs to have the delete_repo scope.

Sie benötigen also ein Token mit anderen Bereichen als dem, das Sie haben. Sie können eine solche Token erstellen die Verwendung Authorizations API:

curl -v -u username -X POST https://api.github.com/authorizations -d '{"scopes":["delete_repo"], "note":"token with delete repo scope"}'

Dies wird ein JSON-Dokument mit dem neuen Token zurück, die Sie sollten ein Repository verwenden können, löschen:

{ 
    "id": XXXXX, 
    "url": "https://api.github.com/authorizations/XXXXX", 
    "app": { 
    "name": "GitHub API", 
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api", 
    "client_id": "00000000000000000000" 
    }, 
    "token": "XXXXXX", 
    "note": "token with delete repo scope", 
    "note_url": null, 
    "created_at": "2013-10-11T20:34:49Z", 
    "updated_at": "2013-10-11T20:34:49Z", 
    "scopes": [ 
    "delete_repo" 
    ] 
} 

Natürlich Wenn Sie auf diese Weise ein Token erstellen, können Sie mehrere Bereiche anfordern, nicht nur den Bereich delete_repo.

Auch der Grund, warum die API einen 404-Fehler zurückgibt, wenn Sie nicht die richtige Berechtigung haben, ist prevent information leakage.

+1

Ich liebe, dass Sie hier sind und diese auch beantworten. =) –

+0

Wenn Sie die Zwei-Faktor-Authentifizierung für Ihr Konto aktiviert haben, fügen Sie Ihren Authentifizierungscode als Kopfzeilenwert von "X-GitHub-OTP" hinzu [Arbeiten mit Zwei-Faktor-Authentifizierung] (http://developer.github.com/ v3/auth/# working-with-two-factor-authentication) –

+2

Die Benutzeroberfläche der Github-Website bietet nun die Möglichkeit, ein Token mit mehreren Gültigkeitsbereichen zu erstellen. Wenn @Ivan Zuzak seine Antwort aktualisieren könnte, um ein aktuelles Beispiel zum Erstellen eines Token mit mehreren Bereichen über die Befehlszeile aufzunehmen, wäre dies sehr zu begrüßen. Meine Versuche, 'curl -v -u Benutzername -X POST https://api.github.com/authorizations -d '{" Bereiche ": [" delete_repo "]}'' zu verwenden, funktionierte nicht - vielleicht weil die API hat sich seit dem ursprünglichen Post geändert. – lawlist

6

Delete Repository

curl -X DELETE -H 'Authorization: token {access token goes here}' https://api.github.com/repos/{yourUsername}/{name of repo} Ersetzen Sie die geschweiften Klammern und Text nach innen.

Anzeige Kopf

curl -I https://api.github.com Die -I Mittel nur die HTTP-Header holen.

erstellen Repository

curl -u yourUsername -X POST https://api.github.com/user/repos -d '{"name":"nameOfRepo"}'

+1

curl -u ihrbenutzername -X https DELETE: // api .github.com/repos/{yourUsername}/{name of repo} war ein einfacher Weg, um die Löschung zu erreichen. dann könnte ich mich von dort aus verbessern, um Anmeldeinformationen hinzuzufügen. –

+0

der create cmd funktioniert nicht, habe ich etwas übersehen? – Timo

Verwandte Themen