From 41a2224022f65c9aa10cfdef55dc89a3a88b54ae Mon Sep 17 00:00:00 2001 From: Michael Dowling Date: Fri, 7 Mar 2014 13:56:07 -0800 Subject: [PATCH] Cleaning up debug output for the stream adapter --- src/Adapter/StreamAdapter.php | 56 ++++++++++++----------------- tests/Adapter/StreamAdapterTest.php | 14 ++++---- 2 files changed, 30 insertions(+), 40 deletions(-) diff --git a/src/Adapter/StreamAdapter.php b/src/Adapter/StreamAdapter.php index d9121121..8b3e99d8 100644 --- a/src/Adapter/StreamAdapter.php +++ b/src/Adapter/StreamAdapter.php @@ -250,44 +250,34 @@ class StreamAdapter implements AdapterInterface private function visit_debug(RequestInterface $request, &$options, $value, &$params) { + static $map = [ + STREAM_NOTIFY_CONNECT => 'CONNECT', + STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED', + STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT', + STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS', + STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS', + STREAM_NOTIFY_REDIRECTED => 'REDIRECTED', + STREAM_NOTIFY_PROGRESS => 'PROGRESS', + STREAM_NOTIFY_FAILURE => 'FAILURE', + STREAM_NOTIFY_COMPLETED => 'COMPLETED', + STREAM_NOTIFY_RESOLVE => 'RESOLVE' + ]; + + static $args = ['severity', 'message', 'message_code', + 'bytes_transferred', 'bytes_max']; + if (!is_resource($value)) { $value = fopen('php://output', 'w'); } - $params['notification'] = function ( - $code, - $severity, - $message, - $message_code, - $bytes_transferred, - $bytes_max - ) use ($request, $value) { - fwrite($value, '<' . $request->getUrl() . '>: '); - switch ($code) { - case STREAM_NOTIFY_COMPLETED: - fwrite($value, 'Completed request to ' . $request->getUrl() . "\n"); - break; - case STREAM_NOTIFY_FAILURE: - fwrite($value, "Failure: {$message_code} {$message} \n"); - break; - case STREAM_NOTIFY_RESOLVE: - case STREAM_NOTIFY_AUTH_REQUIRED: - case STREAM_NOTIFY_AUTH_RESULT: - var_dump($code, $severity, $message, $message_code, $bytes_transferred, $bytes_max); - break; - case STREAM_NOTIFY_CONNECT: - fputs($value, "Connected...\n"); - break; - case STREAM_NOTIFY_FILE_SIZE_IS: - fputs($value, "Got the filesize: {$bytes_max}\n"); - break; - case STREAM_NOTIFY_MIME_TYPE_IS: - fputs($value, "Found the mime-type: {$message}\n"); - break; - case STREAM_NOTIFY_PROGRESS: - fputs($value, "Downloaded {$bytes_transferred} bytes\n"); - break; + $params['notification'] = function () use ($request, $value, $map, $args) { + $passed = func_get_args(); + $code = array_shift($passed); + fprintf($value, '<%s> [%s] ', $request->getUrl(), $map[$code]); + foreach (array_filter($passed) as $i => $v) { + fwrite($value, $args[$i] . ': "' . $v . '" '); } + fwrite($value, "\n"); }; } } diff --git a/tests/Adapter/StreamAdapterTest.php b/tests/Adapter/StreamAdapterTest.php index 4a915a11..55d75d5b 100644 --- a/tests/Adapter/StreamAdapterTest.php +++ b/tests/Adapter/StreamAdapterTest.php @@ -307,9 +307,9 @@ class StreamAdapterTest extends \PHPUnit_Framework_TestCase ob_start(); $client->get('/', ['debug' => true]); $contents = ob_get_clean(); - $this->assertContains(': Connected', $contents); - $this->assertContains(': Got the filesize: 8', $contents); - $this->assertContains(': Downloaded 0 bytes', $contents); + $this->assertContains(' [CONNECT]', $contents); + $this->assertContains(' [FILE_SIZE_IS]', $contents); + $this->assertContains(' [PROGRESS]', $contents); } public function testDebugAttributeWritesStreamInfoToBuffer() @@ -324,9 +324,9 @@ class StreamAdapterTest extends \PHPUnit_Framework_TestCase $client->get('/', ['debug' => $buffer]); fseek($buffer, 0); $contents = stream_get_contents($buffer); - $this->assertContains(': Connected', $contents); - $this->assertContains(': Got the filesize: 8', $contents); - $this->assertContains(': Downloaded 0 bytes', $contents); - $this->assertContains(': Found the mime-type: text/plain', $contents); + $this->assertContains(' [CONNECT]', $contents); + $this->assertContains(' [FILE_SIZE_IS] message: "Content-Length: 8"', $contents); + $this->assertContains(' [PROGRESS] bytes_max: "8"', $contents); + $this->assertContains(' [MIME_TYPE_IS] message: "text/plain"', $contents); } }