Skip to content
Snippets Groups Projects
Select Git revision
  • f255702b2ef7a837c37ebe832bf6404bdd5bc6b2
  • master default protected
  • 1.2.3
  • 1.2.2
  • 1.2.1
  • 1.2.0
  • 1.1.0
  • 1.0.2
  • 1.0.1
  • 1.0
10 results

CachedClient.php

Blame
  • 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