From c33f2615b5609854f838bbddb1a274eaeeeac3a9 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Sun, 17 Jan 2021 14:13:58 +0100 Subject: [PATCH] Include json response bodies in transport exceptions, fixes #9606 --- src/Composer/Util/Http/CurlDownloader.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Composer/Util/Http/CurlDownloader.php b/src/Composer/Util/Http/CurlDownloader.php index de4cd3d11..0584fa77d 100644 --- a/src/Composer/Util/Http/CurlDownloader.php +++ b/src/Composer/Util/Http/CurlDownloader.php @@ -515,8 +515,15 @@ class CurlDownloader @unlink($job['filename'].'~'); } - $exception = new TransportException('The "'.$job['url'].'" file could not be downloaded ('.$errorMessage.')', $response->getStatusCode()); + $details = ''; + if ($response->getHeader('content-type') === 'application/json') { + $details = ':'.PHP_EOL.substr($response->getBody(), 0, 200).(strlen($response->getBody()) > 200 ? '...' : ''); + } + + $exception = new TransportException('The "'.$job['url'].'" file could not be downloaded ('.$errorMessage.')' . $details, $response->getStatusCode()); $exception->setResponseInfo($responseInfo); + $exception->setHeaders($response->getHeaders()); + $exception->setResponse($response->getBody()); return $exception; }