8000 [HttpClient] Add support for "friendsofphp/well-known-implementations" · symfony/symfony@b814ce8 · GitHub
[go: up one dir, main page]

Skip to content

Commit b814ce8

Browse files
[HttpClient] Add support for "friendsofphp/well-known-implementations"
1 parent d7fe6a0 commit b814ce8

File tree

3 files changed

+25
-4
lines changed

3 files changed

+25
-4
lines changed

src/Symfony/Component/HttpClient/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ CHANGELOG
77
* Make `HttplugClient` implement `Psr\Http\Message\RequestFactoryInterface`, `StreamFactoryInterface` and `UriFactoryInterface`
88
* Deprecate implementing `Http\Message\RequestFactory`, `StreamFactory` and `UriFactory` on `HttplugClient`
99
* Add `withOptions()` to `HttplugClient` and `Psr18Client`
10+
* Add support for "friendsofphp/well-known-implementations"
1011

1112
6.1
1213
---

src/Symfony/Component/HttpClient/HttplugClient.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
namespace Symfony\Component\HttpClient;
1313

14+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr17Factory;
15+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr7Request;
16+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr7Uri;
1417
use GuzzleHttp\Promise\Promise as GuzzlePromise;
1518
use GuzzleHttp\Promise\RejectedPromise;
1619
use GuzzleHttp\Promise\Utils;
@@ -81,12 +84,12 @@ public function __construct(HttpClientInterface $client = null, ResponseFactoryI
8184
$this->promisePool = class_exists(Utils::class) ? new \SplObjectStorage() : null;
8285

8386
if (null === $responseFactory || null === $streamFactory) {
84-
if (!class_exists(Psr17Factory::class) && !class_exists(Psr17FactoryDiscovery::class)) {
87+
if (!class_exists(Psr17Factory::class) && !class_exists(WellKnownPsr17Factory::class) && !class_exists(Psr17FactoryDiscovery::class)) {
8588
throw new \LogicException('You cannot use the "Symfony\Component\HttpClient\HttplugClient" as no PSR-17 factories have been provided. Try running "composer require nyholm/psr7".');
8689
}
8790

8891
try {
89-
$psr17Factory = class_exists(Psr17Factory::class, false) ? new Psr17Factory() : null;
92+
$psr17Factory = class_exists(Psr17Factory::class, false) ? new Psr17Factory() : (class_exists(WellKnownPsr17Factory::class, false) ? new WellKnownPsr17Factory() : null);
9093
$responseFactory ??= $psr17Factory ?? Psr17FactoryDiscovery::findResponseFactory();
9194
$streamFactory ??= $psr17Factory ?? Psr17FactoryDiscovery::findStreamFactory();
9295
} catch (NotFoundException $e) {
@@ -167,6 +170,8 @@ public function createRequest($method, $uri, array $headers = [], $body 8000 = null,
167170
$request = $this->responseFactory->createRequest($method, $uri);
168171
} elseif (class_exists(Request::class)) {
169172
$request = new Request($method, $uri);
173+
} elseif (class_exists(WellKnownPsr7Request::class)) {
174+
$request = new WellKnownPsr7Request($method, $uri);
170175
} elseif (class_exists(Psr17FactoryDiscovery::class)) {
171176
$request = Psr17FactoryDiscovery::findRequestFactory()->createRequest($method, $uri);
172177
} else {
@@ -244,6 +249,10 @@ public function createUri($uri = ''): UriInterface
244249
return new Uri($uri);
245250
}
246251

252+
if (class_exists(WellKnownPsr7Uri::class)) {
253+
return new WellKnownPsr7Uri($uri);
254+
}
255+
247256
if (class_exists(Psr17FactoryDiscovery::class)) {
248257
return Psr17FactoryDiscovery::findUrlFactory()->createUri($uri);
249258
}

src/Symfony/Component/HttpClient/Psr18Client.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
namespace Symfony\Component\HttpClient;
1313

14+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr17Factory;
15+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr7Request;
16+
use FriendsOfPHP\WellKnownImplementations\WellKnownPsr7Uri;
1417
use Http\Discovery\Exception\NotFoundException;
1518
use Http\Discovery\Psr17FactoryDiscovery;
1619
use Nyholm\Psr7\Factory\Psr17Factory;
@@ -62,12 +65,12 @@ public function __construct(HttpClientInterface $client = null, ResponseFactoryI
6265
$streamFactory ??= $responseFactory instanceof StreamFactoryInterface ? $responseFactory : null;
6366

6467
if (null === $responseFactory || null === $streamFactory) {
65-
if (!class_exists(Psr17Factory::class) && !class_exists(Psr17FactoryDiscovery::class)) {
68+
if (!class_exists(Psr17Factory::class) && !class_exists(WellKnownPsr17Factory::class) && !class_exists(Psr17FactoryDiscovery::class)) {
6669
throw new \LogicException('You cannot use the "Symfony\Component\HttpClient\Psr18Client" as no PSR-17 factories have been provided. Try running "composer require nyholm/psr7".');
6770
}
6871

6972
try {
70-
$psr17Factory = class_exists(Psr17Factory::class, false) ? new Psr17Factory() : null;
73+
$psr17Factory = class_exists(Psr17Factory::class, false) ? new Psr17Factory() : (class_exists(WellKnownPsr17Factory::class, false) ? new WellKnownPsr17Factory() : null);
7174
$responseFactory ??= $psr17Factory ?? Psr17FactoryDiscovery::findResponseFactory();
7275
$streamFactory ??= $psr17Factory ?? Psr17FactoryDiscovery::findStreamFactory();
7376
} catch (NotFoundException $e) {
@@ -141,6 +144,10 @@ public function createRequest(string $method, $uri): RequestInterface
141144
return new Request($method, $uri);
142145
}
143146

147+
if (class_exists(WellKnownPsr7Request::class)) {
148+
return new WellKnownPsr7Request($method, $uri);
149+
}
150+
144151
if (class_exists(Psr17FactoryDiscovery::class)) {
145152
return Psr17FactoryDiscovery::findRequestFactory()->createRequest($method, $uri);
146153
}
@@ -179,6 +186,10 @@ public function createUri(string $uri = ''): UriInterface
179186
return new Uri($uri);
180187
}
181188

189+
if (class_exists(WellKnownPsr7Uri::class)) {
190+
return new WellKnownPsr7Uri($uri);
191+
}
192+
182193
if (class_exists(Psr17FactoryDiscovery::class)) {
183194
return Psr17FactoryDiscovery::findUrlFactory()->createUri($uri);
184195
}

0 commit comments

Comments
 (0)
0