Skip to content
Snippets Groups Projects

Feature/first release

Merged Krzysztof Dyszczyk requested to merge feature/first-release into master
2 unresolved threads
57 files
+ 31
1547
Compare changes
  • Side-by-side
  • Inline

Files

+ 111
0
<?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
*/
public function sendRequest(Request $request)
{
$response = $this->cacheDispatcher->dispatch($request, $this, $this);
return $response;
}
/**
* @return HttpClient
*/
public function getHttpClient()
{
return $this->client->getHttpClient();
}
/**
* @param HttpClient $client
* @return mixed
*/
public function setHttpClient(HttpClient $client)
{
return $this->client->setHttpClient($client);
}
/**
* @return Serializer
*/
public function getSerializer()
{
return $this->client->getSerializer();
}
/**
* @return string
*/
public function getApiUrl()
{
return $this->client->getApiUrl();
}
}
\ No newline at end of file
Loading