Skip to content

phpwebclient/ext-cache

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jul 26, 2022
0179dba · Jul 26, 2022

History

9 Commits
Jul 26, 2022
Jul 26, 2022
Jul 26, 2022
Jul 26, 2022
Jun 30, 2020
Jul 26, 2022
Jun 30, 2020
Jul 26, 2022
Jul 26, 2022
Jun 30, 2020
Nov 4, 2020

Repository files navigation

Latest Stable Version Total Downloads License PHP

webclient/ext-cache

Cache extension for PSR-18 HTTP client.

Install

Install this package and your favorite psr-18 implementation, psr-17 implementation and cache implementation.

composer require webclient/ext-cache:^2.0

Using

<?php

use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Webclient\Cache\Contract\CacheInterface;
use Webclient\Extension\Cache\Client;
use Webclient\Extension\Cache\CacheKeyFactory\CacheKeyFactoryInterface;

/** 
 * @var ClientInterface $client Your PSR-18 HTTP Client
 * @var ResponseFactoryInterface $responseFactory Your PSR-17 response factory
 * @var StreamFactoryInterface $streamFactory Your PSR-17 stream factory
 * @var CacheInterface $cache Your cache adapter
 * @var CacheKeyFactoryInterface|null $cacheKeyFactory key factory for your cache
 */
$http = new CacheClientDecorator(
    $client, 
    $responseFactory, 
    $streamFactory, 
    $cache,
    $cacheKeyFactory,
    'X-Private-Cache-Key-Header', // name of the header in which the private cache key is contained
    4096, // Maximal response size (with header). null for unlimited.
    2147483648 // maximal TTL of cache items
);

/** @var RequestInterface $request */
$response = $http->sendRequest($request);

/** @var RequestInterface $request */
$response = $http->sendRequest($request);

/** 
 * For using private cache add header `X-Private-Cache-Key-Header` (or your configured) to request.
 * header `X-Private-Cache-Key-Header` (or your configured) do not be sent to original http-client.
 */
$response = $http->sendRequest($request->withHeader('X-Private-Cache-Key-Header', ['private-key-for-current-user']));
 

Not handled requests

If the request contains If-None-Match, If-Match, If-Modified-Since, If-Unmodified-Since, or If-Range headers, then the response will be returned as is.

Partial Requests

Partial requests not supports.