Skip to content

Commit

Permalink
bug #31850 [HttpClient] add $response->cancel() (nicolas-grekas)
Browse files Browse the repository at this point in the history
This PR was merged into the 4.3 branch.

Discussion
----------

[HttpClient] add $response->cancel()

| Q             | A
| ------------- | ---
| Branch?       | 4.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | symfony/symfony-docs#11668

An alternative to #31845 and #31842.
Same as  #31831 but considered as a bug fix (at the Contracts level), thus for 4.3.
I think we're early enough since 4.3/1.1 to do it.
That will save us some headaches in the short term.

Commits
-------

c402418 [HttpClient] add $response->cancel()
  • Loading branch information
fabpot committed Jun 5, 2019
2 parents 28fbf16 + c402418 commit e5b082a
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 2 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"psr/container": "^1.0",
"psr/link": "^1.0",
"psr/log": "~1.0",
"symfony/contracts": "^1.1.1",
"symfony/contracts": "^1.1.3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-icu": "~1.0",
"symfony/polyfill-intl-idn": "^1.10",
Expand Down
9 changes: 9 additions & 0 deletions src/Symfony/Component/HttpClient/Response/ResponseTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,15 @@ public function toArray(bool $throw = true): array
return $content;
}

/**
* {@inheritdoc}
*/
public function cancel(): void
{
$this->info['error'] = 'Response has been canceled.';
$this->close();
}

/**
* Closes the response and all its network handles.
*/
Expand Down
2 changes: 1 addition & 1 deletion src/Symfony/Component/HttpClient/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"require": {
"php": "^7.1.3",
"psr/log": "^1.0",
"symfony/http-client-contracts": "^1.1",
"symfony/http-client-contracts": "^1.1.3",
"symfony/polyfill-php73": "^1.11"
},
"require-dev": {
Expand Down
5 changes: 5 additions & 0 deletions src/Symfony/Contracts/HttpClient/ResponseInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ public function getContent(bool $throw = true): string;
*/
public function toArray(bool $throw = true): array;

/**
* Cancels the response.
*/
public function cancel(): void;

/**
* Returns info coming from the transport layer.
*
Expand Down
10 changes: 10 additions & 0 deletions src/Symfony/Contracts/HttpClient/Test/HttpClientTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,16 @@ public function testPostCallback()
$this->assertSame(['foo' => '0123456789', 'REQUEST_METHOD' => 'POST'], $response->toArray());
}

public function testCancel()
{
$client = $this->getHttpClient(__FUNCTION__);
$response = $client->request('GET', 'http://localhost:8057/timeout-header');

$response->cancel();
$this->expectException(TransportExceptionInterface::class);
$response->getHeaders();
}

public function testOnProgressCancel()
{
$client = $this->getHttpClient(__FUNCTION__);
Expand Down

0 comments on commit e5b082a

Please sign in to comment.