[Server] Add Bidirectional Client Communication Support (#109)

* feat(server): add bidirectional client communication support

* fix(server): use correct session ID string conversion method

* fix: clean up docblocks for request handler methods in Builder

* fix: merge artifacts
This commit is contained in:
Kyrian Obikwelu 2025-10-26 22:48:17 +01:00 • committed by GitHub
commit f1b471a219
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -25,6 +25,8 @@ use Psr\Log\LoggerInterface;
use Psr\Log\NullLogger;
/**
* @implements RequestHandlerInterface<ReadResourceResult>
*
* @author Tobias Nyholm <tobias.nyholm@gmail.com>
*/
final class ReadResourceHandler implements RequestHandlerInterface
@ -41,6 +43,9 @@ final class ReadResourceHandler implements RequestHandlerInterface
return $request instanceof ReadResourceRequest;
}
/**
* @return Response<ReadResourceResult>|Error
*/
public function handle(Request $request, SessionInterface $session): Response|Error
{
\assert($request instanceof ReadResourceRequest);
@ -55,7 +60,12 @@ final class ReadResourceHandler implements RequestHandlerInterface
throw new ResourceNotFoundException($request);
}
$result = $this->referenceHandler->handle($reference, ['uri' => $uri]);
$arguments = [
'uri' => $uri,
'_session' => $session,
];
$result = $this->referenceHandler->handle($reference, $arguments);
if ($reference instanceof ResourceTemplateReference) {
$formatted = $reference->formatResult($result, $uri, $reference->resourceTemplate->mimeType);