Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy::cache PHP Method

cache() public method

public cache ( Psr\Http\Message\RequestInterface $request, Psr\Http\Message\ResponseInterface $response ) : boolean
$request Psr\Http\Message\RequestInterface
$response Psr\Http\Message\ResponseInterface
return boolean true if success
    public function cache(RequestInterface $request, ResponseInterface $response)
    {
        $reqCacheControl = new KeyValueHttpHeader($request->getHeader('Cache-Control'));
        if ($reqCacheControl->has('no-store')) {
            // No caching allowed
            return false;
        }
        $cacheObject = $this->getCacheObject($request, $response);
        if ($cacheObject !== null) {
            return $this->storage->save($this->getCacheKey($request), $cacheObject);
        }
        return false;
    }

Usage Example

 public function testCacheProvider()
 {
     $TMP_DIR = __DIR__ . '/tmp/';
     $cacheProviders = [new DoctrineCacheStorage(new ArrayCache()), new DoctrineCacheStorage(new ChainCache([new ArrayCache()])), new DoctrineCacheStorage(new FilesystemCache($TMP_DIR)), new DoctrineCacheStorage(new PhpFileCache($TMP_DIR)), new FlysystemStorage(new Local($TMP_DIR))];
     $request = new Request('GET', 'test.local');
     $response = new Response(200, ['Cache-Control' => 'max-age=60'], 'Test content');
     /** @var CacheProvider $cacheProvider */
     foreach ($cacheProviders as $cacheProvider) {
         $this->rrmdir($TMP_DIR);
         $cache = new PrivateCacheStrategy($cacheProvider);
         $cache->cache($request, $response);
         $entry = $cache->fetch($request);
         $this->assertNotNull($entry);
         $this->assertEquals((string) $response->getBody(), (string) $entry->getResponse()->getBody());
     }
     $this->rrmdir($TMP_DIR);
 }