From 88bcaa839032d9730611cf7605ee4c6268f9e2a1 Mon Sep 17 00:00:00 2001 From: Michael Dowling Date: Wed, 20 Apr 2011 20:37:05 -0500 Subject: [PATCH] [Http] Adding a fix for parsing the Cache-Control directives of a message that has multiple Cache-Control headers. Closes #2. --- src/Guzzle/Http/Message/AbstractMessage.php | 3 +++ .../Guzzle/Tests/Http/Message/AbstractMessageTest.php | 10 ++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Guzzle/Http/Message/AbstractMessage.php b/src/Guzzle/Http/Message/AbstractMessage.php index 62aedb05..a3519f6b 100644 --- a/src/Guzzle/Http/Message/AbstractMessage.php +++ b/src/Guzzle/Http/Message/AbstractMessage.php @@ -239,6 +239,9 @@ abstract class AbstractMessage implements MessageInterface $this->cacheControl = array(); $cacheControl = $this->getHeader('Cache-Control'); if ($cacheControl) { + if (is_array($cacheControl)) { + $cacheControl = implode(',', $cacheControl); + } foreach (explode(',', $cacheControl) as $pieces) { $parts = array_map('trim', explode('=', $pieces)); $this->cacheControl[$parts[0]] = isset($parts[1]) ? $parts[1] : true; diff --git a/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php b/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php index 5f9118b1..927048f4 100644 --- a/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php +++ b/tests/Guzzle/Tests/Http/Message/AbstractMessageTest.php @@ -133,5 +133,15 @@ class AbstractMessageTest extends \Guzzle\Tests\GuzzleTestCase $this->assertFalse($r->hasCacheControlDirective('max-age')); $r->addCacheControlDirective('must-revalidate'); $this->assertTrue($r->hasCacheControlDirective('must-revalidate')); + + // Make sure that it works with multiple Cache-Control headers + $r->setHeader('Cache-Control', 'must-revalidate, max-age=100'); + $r->addHeaders(array( + 'Cache-Control' => 'no-cache' + )); + + $this->assertEquals(true, $r->getCacheControlDirective('no-cache')); + $this->assertEquals(true, $r->getCacheControlDirective('must-revalidate')); + $this->assertEquals(100, $r->getCacheControlDirective('max-age')); } } \ No newline at end of file