Github-api que da 404 al pasar json-data con python + urllib2
Tengo el siguiente código, que debería realizar la primera parte de la creación de una nueva descarga en github. Debe enviar los datos json con POST.
<code>jsonstring = '{"name": "test", "size": "4"}' req = urllib2.Request("https://api.github.com/repos/<user>/<repo>/downloads") req.add_header('Authorization', 'token ' + '<token>') result = urllib2.urlopen(req, jsonstring) </code>
Si quito el, jsonstring
desde elurlopen()
, no falla, y me da la lista de descargas disponibles. Sin embargo, si trato de POSTAR el json-string, obtengo un error 404.
El problema tiene que ser con el json, o en la forma en que lo envío, pero no puedo averiguar cuál es el problema. Las cuerdas en<...>
están justo en el código real, los acabo de eliminar de la publicación
Intenté más o menos lo mismo concurl
en la línea de comandos, con un método de autenticación ligeramente diferente, y funcionó.
Probado
Funciona (devuelve el json deseado):
<code>curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Trabajos:
<code>curl -H 'Authorization: token <token>' https://api.github.com/ </code>
No funciona (devuelve "credenciales inválidas"):
<code>curl -H 'Authorization: token <invalid_token>' https://api.github.com/ </code>
No funciona ("no encontrado"):
<code>curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Esto no parece ser un problema específico del código de Python. Los datos POST de json parecen estar bien, y la autorización del token OAuth parece estar funcionando (al menos en parte). Pero cuando estos se ponen juntos, deja de funcionar.