Así que estoy tratando de familiarizarme con la API de GitHub. Estoy usando commands cURL para implementar algunas de sus funciones básicas. Puedo get la autorización básica y la creación del repository correctamente. Actualmente, bash crear un file en un repository utilizando su API & am frente al post "post": error "No encontrado" como respuesta.
Su documentation sugiere esto:
PUT /repos/:owner/:repo/contents/:path
Se me ocurrió esto como el equivalente de cURL:
curl -H 'Authorization: <token>' -d '{"path": "test.txt", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test.txt
Creo que el problema está en la URL de la API que estoy usando al final, pero parece que no puedo entender cómo debería ser la URL.
Esto es lo que utilicé para crear un repository:
curl -i -H 'Authorization: <token>' -d '{"name": "test_repo1", "message": "Initial Commit", "committer": {"name": "<name>", "email": "<email>"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "note":"Test Commit"}' https://api.github.com/user/repos
La URL de creación de repository que utilicé sigue: usuario / repos como syntax. Del mismo modo, he intentado usar user / repos / repo, pero no funcionó.
¿Alguien puede aclarar esto?
He revisado varias preguntas de StackOverflow y muchas parecen similares, pero ninguna realmente ofrece un ejemplo, así que puedo descubrir dónde está el error.
EDITAR: Gracias a TimWolla por la respuesta.
Sintaxis de un command en funcionamiento para crear un file en un repository usando la API de GitHub:
curl -i -X PUT -H 'Authorization: token <token_string>' -d '{"path": "<filename.extension>", "message": "<Commit Message>", "committer": {"name": "<Name>", "email": "<E-Mail>"}, "content": "<Base64 Encoded>", "branch": "master"}' https://api.github.com/repos/<owner>/<repository>/contents/<filename.extension>
Mi ejemplo:
curl -i -X PUT -H 'Authorization: token f94ce61613d5613a23770b324521b63d202d5645' -d '{"path": "test4.txt", "message": "Initial Commit", "committer": {"name": "Neil", "email": "neil@abc.com"}, "content": "bXkgbmV3IGZpbGUgY29udGVudHM=", "branch": "master"}' https://api.github.com/repos/InViN-test/test_repo1/contents/test4.txt
Al usar curl
, debe especificar el verbo HTTP correcto ( PUT
en este caso) usando la opción -X
:
curl -X PUT -H 'Authorization: …' yadayada
También usando su carga útil de ejemplo apareció un error 500, esta carga útil acortada funcionó bien:
{"message": "Initial Commit","content": "bXkgbmV3IGZpbGUgY29udGVudHM="}
No obstante, no sé el motivo real del error del server.