conans/client/rest/__init__.py
import json
def response_to_str(response):
content = response.content
try:
# A bytes message, decode it as str
if isinstance(content, bytes):
content = content.decode()
content_type = response.headers.get("content-type")
if content_type == "application/json":
# Errors from Artifactory looks like:
# {"errors" : [ {"status" : 400, "message" : "Bla bla bla"}]}
try:
data = json.loads(content)["errors"][0]
content = "{}: {}".format(data["status"], data["message"])
except Exception:
pass
elif "text/html" in content_type:
content = "{}: {}".format(response.status_code, response.reason)
return content
except Exception:
return response.content