12
12
13
13
namespace Hyperf \JsonRpc ;
14
14
15
- use Hyperf \Context \RequestContext ;
16
- use Hyperf \Context \ResponseContext ;
17
15
use Hyperf \Contract \PackerInterface ;
18
16
use Hyperf \ExceptionHandler \ExceptionHandlerDispatcher ;
19
- use Hyperf \HttpMessage \Server \Request as Psr7Request ;
20
- use Hyperf \HttpMessage \Server \Response as Psr7Response ;
21
17
use Hyperf \HttpServer \Contract \CoreMiddlewareInterface ;
22
18
use Hyperf \HttpServer \ResponseEmitter ;
23
19
use Hyperf \HttpServer \Server ;
28
24
use Hyperf \RpcServer \RequestDispatcher ;
29
25
use Psr \Container \ContainerInterface ;
30
26
use Psr \Http \Message \RequestInterface ;
27
+ use Swow \Psr7 \Message \ResponsePlusInterface ;
28
+ use Swow \Psr7 \Message \ServerRequestPlusInterface ;
31
29
32
30
use function Hyperf \Support \make ;
33
31
@@ -69,9 +67,12 @@ protected function createCoreMiddleware(): CoreMiddlewareInterface
69
67
70
68
protected function initRequestAndResponse ($ request , $ response ): array
71
69
{
72
- ResponseContext::set ($ psr7Response = new Psr7Response ());
73
- // Initialize PSR-7 Request and Response objects.
74
- $ psr7Request = Psr7Request::loadFromSwooleRequest ($ request );
70
+ /**
71
+ * @var ServerRequestPlusInterface $psr7Request
72
+ * @var ResponsePlusInterface $psr7Response
73
+ */
74
+ [$ psr7Request , $ psr7Response ] = parent ::initRequestAndResponse ($ request , $ response );
75
+
75
76
if (! $ this ->isHealthCheck ($ psr7Request )) {
76
77
if (! str_contains ($ psr7Request ->getHeaderLine ('content-type ' ), 'application/json ' )) {
77
78
$ psr7Response = $ this ->responseBuilder ->buildErrorResponse ($ psr7Request , ResponseBuilder::PARSE_ERROR );
@@ -82,15 +83,14 @@ protected function initRequestAndResponse($request, $response): array
82
83
$ psr7Response = $ this ->responseBuilder ->buildErrorResponse ($ psr7Request , ResponseBuilder::INVALID_REQUEST );
83
84
}
84
85
}
86
+
85
87
$ psr7Request = $ psr7Request ->setUri ($ psr7Request ->getUri ()->withPath ($ content ['method ' ] ?? '/ ' ))
86
88
->setParsedBody ($ content ['params ' ] ?? null )
87
89
->setAttribute ('data ' , $ content ?? [])
88
90
->setAttribute ('request_id ' , $ content ['id ' ] ?? null );
89
91
90
92
$ this ->getContext ()->setData ($ content ['context ' ] ?? []);
91
93
92
- RequestContext::set ($ psr7Request );
93
- ResponseContext::set ($ psr7Response );
94
94
return [$ psr7Request , $ psr7Response ];
95
95
}
96
96
0 commit comments