Select Git revision
CachedClient.php
-
Grzegorz Rola authoredGrzegorz Rola authored
CachedClient.php 2.32 KiB
<?php
namespace WPDesk\ApiClient\Client;
use Psr\SimpleCache\CacheInterface;
use WPDesk\Cache\CacheDispatcher;
use WPDesk\Cache\CacheItemCreator;
use WPDesk\Cache\CacheItemVerifier;
use WPDesk\HttpClient\HttpClient;
use WPDesk\ApiClient\Request\Request;
use WPDesk\ApiClient\Response\Response;
use WPDesk\ApiClient\Serializer\Serializer;
class CachedClient implements Client, CacheItemCreator, CacheItemVerifier
{
/** @var Client */
private $client;
/** @var CacheInterface */
private $cache;
/**
* @var CacheDispatcher
*/
private $cacheDispatcher;
/**
* CachedClient constructor.
* @param Client $decorated Decorated client
* @param CacheInterface $cache
*/
public function __construct(Client $decorated, CacheInterface $cache)
{
$this->client = $decorated;
$this->cache = $cache;
$this->cacheDispatcher = new CacheDispatcher($cache, [new RequestCacheInfoResolver()]);
}
/**
* Create item to cache.
*
* @param Request $request
* @return Response
*/
public function createCacheItem($request)
{
return $this->client->sendRequest($request);
}
/**
* Verify cache item.
*
* @param $object
* @return Response;
*/
public function getVerifiedItemOrNull($object)
{
if ($object instanceof Response) {
return $object;
}
return null;
}
/**
* Send request.
*
* @param Request $request
* @return mixed|Response
* @throws \Psr\SimpleCache\InvalidArgumentException