webclient / ext-cache
Cache extension for PSR-18 HTTP client
Fund package maintenance!
www.paypal.me/ddrv
Patreon
Installs: 1 348
Dependents: 0
Suggesters: 1
Security: 0
Stars: 1
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- ext-mbstring: *
- psr/http-client: ^1.0
- psr/http-factory: ^1.0
- webclient/cache-contract: ^1.0
Requires (Dev)
- nyholm/psr7: ^1.5
- phpunit/phpunit: ^6.5 || ^7.5 || ^8.5 || ^9.5
- squizlabs/php_codesniffer: ^3.7
- webclient/fake-http-client: ^2.0
Suggests
- psr/http-client-implementation: Choice your favorite psr-18 implementation
- webclient/cache-contract-implementation: Choice your cache implementation
Provides
README
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.