Github-api dando 404 ao passar json-data com python + urllib2
Eu tenho o seguinte código, que deve executar a primeira parte da criação de um novo download no github. Deve enviar os dados do json com o 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>
Se eu remover o, jsonstring
deurlopen()
, não falha, e me fornece a lista de downloads disponíveis. No entanto, se eu tentar POSTAR o json-string, recebo o erro 404.
O problema tem que estar com o json, ou na maneira como eu o envio, mas não consigo descobrir qual é o problema. As cordas em<...>
estão bem no código real, acabei de removê-los do post
Eu tentei aproximadamente o mesmo comcurl
na linha de comando, com um método de autenticação ligeiramente diferente, e funcionou.
Testado:
Works (retorna o json desejado):
<code>curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Trabalho:
<code>curl -H 'Authorization: token <token>' https://api.github.com/ </code>
Não funciona (retorna "credenciais inválidas"):
<code>curl -H 'Authorization: token <invalid_token>' https://api.github.com/ </code>
Não funciona ("não encontrado"):
<code>curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads </code>
Isso não parece ser um problema específico do código python. Os dados POST json parecem estar bem, e a autorização do token OAuth parece estar (pelo menos parcialmente) funcionando. Mas quando estes são colocados juntos, ele pára de funcionar.