echo "Programmes Index" . PHP_EOL; echo '----------------' . PHP_EOL; // Get the index of programmes $programmes = $pp->get_programmes_index('2014', 'ug'); echo 'In total there are ' . count((array) $programmes) . ' programmes' . PHP_EOL; echo PHP_EOL . "Single Programme" . PHP_EOL; echo '----------------' . PHP_EOL; // Get a single programme $programme = $pp->get_programme('2014', 'ug', 1); echo 'Got ' . $programme->programme_title . PHP_EOL; unset($programme, $pp); /** * Caching functionality. */ echo PHP_EOL . "Disk cache" . PHP_EOL; echo '------------' . PHP_EOL; $pp = new ProgrammesPlant\API($api_url); $pp->with_cache('file')->directory('/tmp/cache'); // Get a single programme. $programme = $pp->get_programme('2014', 'ug', 1); echo 'Managed to get ' . $programme->programme_title . PHP_EOL; // We should now be able to get this direct from the cache without making a request. use Guzzle\Http\Message\Request; // Work out where it is stored in the cache. $request = new Request('GET', $api_url . '2014/ug/programmes/1'); $key_provider = new \Guzzle\Plugin\Cache\DefaultCacheKeyProvider(); $key = $key_provider->getCacheKey($request); $data = $pp->cache_object->fetch($key); if (json_decode($data[2]) == $programme) { echo 'Cache is working! Got ' . $programme->programme_title . ' from disk!' . PHP_EOL; }
/** * Serve the response from cache. * * @return bool|array False if we haven't got this in the cache, the cache array if not. */ public function serve_from_cache() { // Work out how this would be cached. $key_provider = new \Guzzle\Plugin\Cache\DefaultCacheKeyProvider(); $cache_key = $key_provider->getCacheKey($this->request); // Attempt to get cache object. $cached = $this->cache_object->fetch($cache_key); return $cached; }
public function testEnsureNonJsonIsntCached() { $pp = new PP('http://example.com'); $pp->with_cache('file')->directory(static::$cache_directory); $pp->prepare(); // Simulate the events for the cache object. $request = new Request('GET', 'http://foo.com'); $response = new Response(200, array(), 'Foo'); // Fake the request. $pp->cache_plugin->onRequestBeforeSend(new Event(array('request' => $request))); // Fake the response to that request. $pp->cache_plugin->onRequestSent(new Event(array('request' => $request, 'response' => $response))); $key_provider = new \Guzzle\Plugin\Cache\DefaultCacheKeyProvider(); $data = $pp->cache_object->fetch($key_provider->getCacheKey($request)); $this->assertEmpty($data, "Non json responses should not be cached."); }