Open riccardo-di-lorenzo opened 2 years ago
The issue seems to be here: https://github.com/fastai/fastcore/blob/938135a5b6e419e2dc8bccca1e9cc32b1c9ff070/fastcore/net.py#L209
urlsend
should not have a parameter that decides whether or not json decode the response, but it should be something that it determines on its own, by looking at what is the content type of the response. Then it could be up to the users to write a decoder for anything that is not a json (or provide an helper if we're being ambitious).
I can see why the assumption was made, as there is an API that downloads an artifact and it allows a parameter to decide its format (making it quite obvious that we're going to get some kind of file), but in other cases, like the one where we download the logs, we don't have this kind of luxury.
I'm not quite sure why this specific corner case is implemented in the fastcore library HERE, but it seems to me we shouldn't count on it in here. Maybe we should set the flags decode=False, return_json=False
if the function we call contains the word "download"?
Hi, I stumbled upon this 2 bugs while trying out your project. It seems to me that those 2 functions that present the issue (
actions.download_workflow_run_logs
andactions.list_jobs_for_workflow_run
) are working under the assumption that they're going to receive json, which is not the case. The first will receive a zip file (in the form of a byte array), while the second will receive the raw logs in the body of the response.To reproduce:
The problem to me seems that the
urlsend()
method in the fastcore dependency does not care about the response type, but tries to json decode the content, no matter what. Which fails because theContent-Type
is, respectively,plain/text
andapplication/zip