mirror of
https://github.com/php-curl-class/php-curl-class.git
synced 2026-08-31 20:52:45 +00:00
Merge pull request #758 from zachborboa/master
Display error messages found in Curl::diagnose()
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user