2013-10-11 3 views
14

Я знаком с API GitHub http://developer.github.com/v3/ Я стараюсь как с помощью плагина RESTClient для Firefox, так и с помощью инструмента командной строки curl.Как удалить репозиторий GitHub с помощью API

Я выяснил, как создать репо с API, однако я не могу удалить его с помощью API.

Согласно помощь здесь: http://developer.github.com/v3/repos/#delete-a-repository я должен отправить запрос удаления, как это:

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

помощь не определяет, и я не уверен, что они имеют в виду: владелец и: репо - будь то имена или идентификаторы, но я попробовал оба имени и идентификаторы в нескольких комбинациях без успеха. Что я получаю в ответ:

404 Not Found 

Что мне не хватает?

+0

Если у вас есть 'github.com/Foo/bar', то': owner' является 'Foo' и': repo' является 'bar'. – Stijn

+0

Спасибо, но все-таки 'локон -X УДАЛИТЬ -H«Авторизация: лексема ххх»https: // api.github.com/репо/Foo/bar' не работает –

+0

Что вы получаете с поддельными учетными данными и неистинное репо? Я получаю это: '$ curl -X DELETE -H 'Авторизация: token xxx' https://api.github.com/repos/foo/bar { « сообщение »:« Плохие учетные данные », « documentation_url »: "http://developer.github.com/v3" } ' – Stijn

ответ

18

Если вы создали маркер, который вы используете через Applications page, то этот маркер будет иметь эти scopes: user, public_repo, repo, gist. Вы можете проверить это, сделав запрос API с этим маркером и глядя на заголовки ответа HTTP:

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

Посмотрите на заголовок X-OAuth-Scopes ответа, который будет иметь список областей:

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

Однако, чтобы удалить репозиторий, token needs to have the delete_repo scope.

Итак, вам нужен токен, имеющий разные области применения, чем тот, который у вас есть. Вы можете создать такую ​​фишку с помощью Authorizations API:

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

Это возвращает JSON документ с новым маркером, который вы должны быть в состоянии использовать, чтобы удалить репозиторий:

{ 
    "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" 
    ] 
} 

Конечно , при создании маркера таким образом вы можете запросить несколько областей, а не только область delete_repo.

Кроме того, в качестве побочной заметки причина, по которой API возвращает ошибку 404, когда у вас нет правильной авторизации, является prevent information leakage.

+1

Мне очень нравится, что вы здесь тоже отвечаете на них. =) –

+0

Если вы включили двухфакторную аутентификацию для своей учетной записи, добавьте свой код аутентификации в качестве значения заголовка «X-GitHub-OTP» [Работа с двухфакторной аутентификацией] (http://developer.github.com/) v3/auth/# working-with-two-factor-authentication) –

+2

Теперь пользовательский интерфейс веб-сайта Github предоставляет средство для создания токена с несколькими областями. Если @Ivan Zuzak мог бы, пожалуйста, обновить свой ответ, включив в него текущий пример того, как создать многократную область tokken из командной строки, что было бы весьма полезно. Мои попытки использования 'curl -v -u username -X POST https://api.github.com/authorizations -d '{" scopes ": [" delete_repo "]}' не работали - возможно, потому, что API изменился с момента публикации. – lawlist

6

Удалить Repository

curl -X DELETE -H 'Authorization: token {access token goes here}' https://api.github.com/repos/{yourUsername}/{name of repo} Заменить фигурные скобки и текст внутри.

Дисплей Заголовок

curl -I https://api.github.com В -I средство извлечения только HTTP-заголовок.

Создать Repository

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

+1

curl -u yourusername -X DELETE https: // api .github.com/repos/{yourUsername}/{name of repo} был простым способом получить удаление работы. то я мог бы улучшить оттуда, чтобы добавить учетные данные. –

+0

создать cmd ist не работает, я что-то пропустил? – Timo

Смежные вопросы