Merge pull request #758 from zachborboa/master

Display error messages found in Curl::diagnose()
This commit is contained in:
Zach Borboa
2023-01-12 07:50:35 -08:00
committed by GitHub
2 changed files with 54 additions and 0 deletions
+27
View File
@@ -1668,6 +1668,33 @@ class Curl
} else {
echo 'Response content length (calculated): ' . $response_calculated_length . "\n";
}
if (preg_match($this->jsonPattern, $this->responseHeaders['Content-Type'])) {
$parsed_response = json_decode($this->rawResponse, true);
if ($parsed_response !== null) {
$messages = [];
array_walk_recursive($parsed_response, function ($value, $key) use (&$messages) {
if (in_array($key, ['code', 'error', 'message'], true)) {
$message = $key . ': ' . $value;
$messages[] = $message;
}
});
$messages = array_unique($messages);
$messages_count = count($messages);
if ($messages_count) {
echo
'Found ' . $messages_count . ' ' . ($messages_count === 1 ? 'message' : 'messages') .
' in response:' . "\n";
$i = 1;
foreach ($messages as $message) {
echo ' ' . $i . ' ' . $message . "\n";
$i += 1;
}
}
}
}
}
}
+27
View File
@@ -4196,6 +4196,33 @@ class CurlTest extends \PHPUnit\Framework\TestCase
}
}
public function testDiagnoseErrorMessage()
{
$test = new Test();
$test->server('json_response', 'POST', [
'body' =>
json_encode([
'error' => [
'code' => 503,
'message' => 'The service is currently unavailable.',
'errors' => [
[
'message' => 'The service is currently unavailable.',
'domain' => 'global',
'reason' => 'backendError',
]
],
'status' => 'UNAVAILABLE',
],
], JSON_PRETTY_PRINT),
]);
$test_output = $test->curl->diagnose(true);
$this->assertStringContainsString('Found 2 messages in response:', $test_output);
$this->assertStringContainsString('code: 503', $test_output);
$this->assertStringContainsString('message: The service is currently unavailable.', $test_output);
}
public function testStopRequest() {
$response_length_bytes = 1e6; // 1e6 = 1 megabyte