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.
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)
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):
curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads
Trabalho:
curl -H 'Authorization: token <token>' https://api.github.com/
Não funciona (retorna "credenciais inválidas"):
curl -H 'Authorization: token <invalid_token>' https://api.github.com/
Não funciona ("não encontrado"):
curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads
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.