You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
<?php
|
|
|
|
namespace Http\Discovery;
|
|
|
|
use Psr\Http\Client\ClientInterface;
|
|
use Psr\Http\Message\RequestFactoryInterface;
|
|
use Psr\Http\Message\RequestInterface;
|
|
use Psr\Http\Message\ResponseFactoryInterface;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestFactoryInterface;
|
|
use Psr\Http\Message\StreamFactoryInterface;
|
|
use Psr\Http\Message\UploadedFileFactoryInterface;
|
|
use Psr\Http\Message\UriFactoryInterface;
|
|
|
|
/**
|
|
* A generic PSR-18 and PSR-17 implementation.
|
|
*
|
|
* You can create this class with concrete client and factory instances
|
|
* or let it use discovery to find suitable implementations as needed.
|
|
*
|
|
* @author Nicolas Grekas <p@tchwork.com>
|
|
*/
|
|
class Psr18Client extends Psr17Factory implements ClientInterface
|
|
{
|
|
private $client;
|
|
|
|
public function __construct(
|
|
?ClientInterface $client = null,
|
|
?RequestFactoryInterface $requestFactory = null,
|
|
?ResponseFactoryInterface $responseFactory = null,
|
|
?ServerRequestFactoryInterface $serverRequestFactory = null,
|
|
?StreamFactoryInterface $streamFactory = null,
|
|
?UploadedFileFactoryInterface $uploadedFileFactory = null,
|
|
?UriFactoryInterface $uriFactory = null
|
|
) {
|
|
parent::__construct($requestFactory, $responseFactory, $serverRequestFactory, $streamFactory, $uploadedFileFactory, $uriFactory);
|
|
|
|
$this->client = $client ?? Psr18ClientDiscovery::find();
|
|
}
|
|
|
|
public function sendRequest(RequestInterface $request): ResponseInterface
|
|
{
|
|
return $this->client->sendRequest($request);
|
|
}
|
|
}
|
|
|