Skip to content

Commit ae5d717

Browse files
authored
Merge pull request #65 from php-http/fix-factory
test that mock client can discover a message factory
2 parents 86cc715 + b6a326a commit ae5d717

File tree

4 files changed

+38
-5
lines changed

4 files changed

+38
-5
lines changed

Diff for: CHANGELOG.md

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# Change Log
22

3-
## 1.5.2 - 2023-05-23
3+
## 1.6.0 - 2023-05-21
4+
5+
### Fixed
6+
7+
- We actually did fallback to the legacy message factory discovery so 1.5.2 is broken.
8+
Changed to use PSR 17 factory discovery.
9+
If you allow the composer plugin of `php-http/discovery`, things will work out of the box.
10+
When disabled and you do not have a PSR-17 factory installed, you will need to explicitly require one, e.g. `nyholm/psr7`.
11+
12+
## 1.5.2 - 2023-05-17
13+
14+
**Broken, use 1.6.0 instead**
415

516
### Removed
617

Diff for: composer.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
"require": {
1919
"php": "^7.1 || ^8.0",
2020
"php-http/client-common": "^2.0",
21-
"php-http/discovery": "^1.0",
21+
"php-http/discovery": "^1.16",
2222
"php-http/httplug": "^2.0",
2323
"psr/http-client": "^1.0",
24-
"psr/http-factory": "^1.0",
24+
"psr/http-factory-implementation": "^1.0",
2525
"psr/http-message": "^1.0 || ^2.0",
2626
"symfony/polyfill-php80": "^1.17"
2727
},
@@ -34,7 +34,10 @@
3434
"phpspec/phpspec": "^5.1 || ^6.1 || ^7.3"
3535
},
3636
"config": {
37-
"sort-packages": true
37+
"sort-packages": true,
38+
"allow-plugins": {
39+
"php-http/discovery": true
40+
}
3841
},
3942
"autoload": {
4043
"psr-4": {

Diff for: spec/ClientSpec.php

+3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ function let(ResponseFactoryInterface $responseFactory)
2222
function it_is_initializable()
2323
{
2424
$this->shouldHaveType(Client::class);
25+
26+
// make sure the client is also instantiable without arguments
27+
new Client();
2528
}
2629

2730
function it_is_an_http_client()

Diff for: src/Client.php

+17-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
use Http\Client\Exception;
77
use Http\Client\HttpAsyncClient;
88
use Http\Client\HttpClient;
9+
use Http\Discovery\Exception\NotFoundException;
910
use Http\Discovery\MessageFactoryDiscovery;
11+
use Http\Discovery\Psr17FactoryDiscovery;
1012
use Http\Message\RequestMatcher;
1113
use Http\Message\ResponseFactory;
1214
use Psr\Http\Client\ClientExceptionInterface;
@@ -72,7 +74,21 @@ public function __construct($responseFactory = null)
7274
);
7375
}
7476

75-
$this->responseFactory = $responseFactory ?: MessageFactoryDiscovery::find();
77+
if ($responseFactory) {
78+
$this->responseFactory = $responseFactory;
79+
80+
return;
81+
}
82+
try {
83+
$this->responseFactory = Psr17FactoryDiscovery::findResponseFactory();
84+
} catch (NotFoundException $notFoundException) {
85+
try {
86+
$this->responseFactory = MessageFactoryDiscovery::find();
87+
} catch (NotFoundException $e) {
88+
// throw the psr-17 exception to make people install the new way and not the old
89+
throw $notFoundException;
90+
}
91+
}
7692
}
7793

7894
/**

0 commit comments

Comments
 (0)