Skip to content

Commit 4ef52f1

Browse files
authored
Support swow psr7-plus interface for all components. (#5839)
1 parent 450493a commit 4ef52f1

File tree

3 files changed

+19
-18
lines changed

3 files changed

+19
-18
lines changed

src/Request/FormRequest.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Hyperf\Collection\Arr;
1515
use Hyperf\Context\Context;
16+
use Hyperf\Context\ResponseContext;
1617
use Hyperf\Contract\ValidatorInterface;
1718
use Hyperf\HttpServer\Request;
1819
use Hyperf\Validation\Contract\ValidatesWhenResolved;
@@ -64,10 +65,7 @@ public function getScene(): ?string
6465
*/
6566
public function response(): ResponseInterface
6667
{
67-
/** @var ResponseInterface $response */
68-
$response = Context::get(ResponseInterface::class);
69-
70-
return $response->withStatus(422);
68+
return ResponseContext::get()->setStatus(422);
7169
}
7270

7371
/**

src/ValidationExceptionHandler.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313

1414
use Hyperf\ExceptionHandler\ExceptionHandler;
1515
use Hyperf\HttpMessage\Stream\SwooleStream;
16-
use Psr\Http\Message\ResponseInterface;
16+
use Swow\Psr7\Message\ResponsePlusInterface;
1717
use Throwable;
1818

1919
class ValidationExceptionHandler extends ExceptionHandler
2020
{
21-
public function handle(Throwable $throwable, ResponseInterface $response)
21+
public function handle(Throwable $throwable, ResponsePlusInterface $response)
2222
{
2323
$this->stopPropagation();
2424
/** @var \Hyperf\Validation\ValidationException $throwable */
2525
$body = $throwable->validator->errors()->first();
2626
if (! $response->hasHeader('content-type')) {
27-
$response = $response->withAddedHeader('content-type', 'text/plain; charset=utf-8');
27+
$response = $response->addHeader('content-type', 'text/plain; charset=utf-8');
2828
}
29-
return $response->withStatus($throwable->status)->withBody(new SwooleStream($body));
29+
return $response->setStatus($throwable->status)->setBody(new SwooleStream($body));
3030
}
3131

3232
public function isValid(Throwable $throwable): bool

tests/Cases/FormRequestTest.php

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
use Hyperf\Context\ApplicationContext;
1515
use Hyperf\Context\Context;
16+
use Hyperf\Context\RequestContext;
17+
use Hyperf\Context\ResponseContext;
1618
use Hyperf\Coroutine\Waiter;
1719
use Hyperf\HttpMessage\Server\Response;
1820
use Hyperf\HttpMessage\Upload\UploadedFile;
@@ -30,6 +32,7 @@
3032
use Psr\Container\ContainerInterface;
3133
use Psr\Http\Message\ResponseInterface;
3234
use Psr\Http\Message\ServerRequestInterface;
35+
use Swow\Psr7\Message\ServerRequestPlusInterface;
3336
use Throwable;
3437

3538
use function Hyperf\Coroutine\wait;
@@ -50,7 +53,7 @@ protected function tearDown(): void
5053

5154
public function testRequestValidationData()
5255
{
53-
$psrRequest = Mockery::mock(ServerRequestInterface::class);
56+
$psrRequest = Mockery::mock(ServerRequestPlusInterface::class);
5457
$file = new UploadedFile('/tmp/tmp_name', 32, 0);
5558
$psrRequest->shouldReceive('getUploadedFiles')->andReturn([
5659
'file' => $file,
@@ -60,15 +63,15 @@ public function testRequestValidationData()
6063
]);
6164
$psrRequest->shouldReceive('getQueryParams')->andReturn([]);
6265

63-
Context::set(ServerRequestInterface::class, $psrRequest);
66+
RequestContext::set($psrRequest);
6467
$request = new DemoRequest(Mockery::mock(ContainerInterface::class));
6568

6669
$this->assertEquals(['id' => 1, 'file' => $file], $request->getValidationData());
6770
}
6871

6972
public function testRequestValidationDataWithSameKey()
7073
{
71-
$psrRequest = Mockery::mock(ServerRequestInterface::class);
74+
$psrRequest = Mockery::mock(ServerRequestPlusInterface::class);
7275
$file = new UploadedFile('/tmp/tmp_name', 32, 0);
7376
$psrRequest->shouldReceive('getUploadedFiles')->andReturn([
7477
'file' => [$file],
@@ -78,23 +81,23 @@ public function testRequestValidationDataWithSameKey()
7881
]);
7982
$psrRequest->shouldReceive('getQueryParams')->andReturn([]);
8083

81-
Context::set(ServerRequestInterface::class, $psrRequest);
84+
RequestContext::set($psrRequest);
8285
$request = new DemoRequest(Mockery::mock(ContainerInterface::class));
8386

8487
$this->assertEquals(['file' => ['Invalid File.', $file]], $request->getValidationData());
8588
}
8689

8790
public function testRewriteGetRules()
8891
{
89-
$psrRequest = Mockery::mock(ServerRequestInterface::class);
92+
$psrRequest = Mockery::mock(ServerRequestPlusInterface::class);
9093
$psrRequest->shouldReceive('getQueryParams')->andReturn([]);
9194
$psrRequest->shouldReceive('getUploadedFiles')->andReturn([]);
9295
$psrRequest->shouldReceive('getParsedBody')->andReturn([
9396
'name' => 'xxx',
9497
]);
9598

96-
Context::set(ServerRequestInterface::class, $psrRequest);
97-
Context::set(ResponseInterface::class, new Response());
99+
RequestContext::set($psrRequest);
100+
ResponseContext::set(new Response());
98101
$container = Mockery::mock(ContainerInterface::class);
99102
$translator = new Translator(new ArrayLoader(), 'en');
100103
$container->shouldReceive('get')->with(ValidatorFactoryInterface::class)->andReturn(new ValidatorFactory($translator));
@@ -115,15 +118,15 @@ public function testRewriteGetRules()
115118

116119
public function testSceneForFormRequest()
117120
{
118-
$psrRequest = Mockery::mock(ServerRequestInterface::class);
121+
$psrRequest = Mockery::mock(ServerRequestPlusInterface::class);
119122
$psrRequest->shouldReceive('getQueryParams')->andReturn([]);
120123
$psrRequest->shouldReceive('getUploadedFiles')->andReturn([]);
121124
$psrRequest->shouldReceive('getParsedBody')->andReturn([
122125
'mobile' => '12345',
123126
]);
124127

125-
Context::set(ServerRequestInterface::class, $psrRequest);
126-
Context::set(ResponseInterface::class, new Response());
128+
RequestContext::set($psrRequest);
129+
ResponseContext::set(new Response());
127130
$container = Mockery::mock(ContainerInterface::class);
128131
$container->shouldReceive('get')->with(Waiter::class)->andReturn(new Waiter());
129132
ApplicationContext::setContainer($container);

0 commit comments

Comments
 (0)