Skip to content

Commit 42255a4

Browse files
Merge branch '4.4' into 5.4
* 4.4: [HttpClient] Handle requests with null body
2 parents 7ac0d8d + 3659c12 commit 42255a4

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

HttpClientTrait.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
trait HttpClientTrait
2525
{
2626
private static $CHUNK_SIZE = 16372;
27+
private static $emptyDefaults;
2728

2829
/**
2930
* {@inheritdoc}
@@ -52,6 +53,16 @@ private static function prepareRequest(?string $method, ?string $url, array $opt
5253
}
5354
}
5455

56+
if (null === self::$emptyDefaults) {
57+
self::$emptyDefaults = [];
58+
59+
foreach ($defaultOptions as $k => $v) {
60+
if (null !== $v) {
61+
self::$emptyDefaults[$k] = $v;
62+
}
63+
}
64+
}
65+
5566
$options = self::mergeDefaultOptions($options, $defaultOptions, $allowExtraOptions);
5667

5768
$buffer = $options['buffer'] ?? true;
@@ -201,6 +212,16 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
201212

202213
$options += $defaultOptions;
203214

215+
if (null === self::$emptyDefaults) {
216+
self::$emptyDefaults = [];
217+
}
218+
219+
foreach (self::$emptyDefaults as $k => $v) {
220+
if (!isset($options[$k])) {
221+
$options[$k] = $v;
222+
}
223+
}
224+
204225
if (isset($defaultOptions['extra'])) {
205226
$options['extra'] += $defaultOptions['extra'];
206227
}
@@ -233,9 +254,9 @@ private static function mergeDefaultOptions(array $options, array $defaultOption
233254

234255
$alternatives = [];
235256

236-
foreach ($defaultOptions as $key => $v) {
237-
if (levenshtein($name, $key) <= \strlen($name) / 3 || str_contains($key, $name)) {
238-
$alternatives[] = $key;
257+
foreach ($defaultOptions as $k => $v) {
258+
if (levenshtein($name, $k) <= \strlen($name) / 3 || str_contains($k, $name)) {
259+
$alternatives[] = $k;
239260
}
240261
}
241262

Tests/CurlHttpClientTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,17 @@ public function testHandleIsReinitOnReset()
7171
self::assertNotSame($initialShareId, $clientState->share);
7272
}
7373

74+
public function testNullBody()
75+
{
76+
$httpClient = $this->getHttpClient(__FUNCTION__);
77+
78+
$httpClient->request('POST', 'http://localhost:8057/post', [
79+
'body' => null,
80+
]);
81+
82+
$this->expectNotToPerformAssertions();
83+
}
84+
7485
public function testProcessAfterReset()
7586
{
7687
$client = $this->getHttpClient(__FUNCTION__);

0 commit comments

Comments
 (0)