diff --git a/src/Capability/Registry/ResourceTemplateReference.php b/src/Capability/Registry/ResourceTemplateReference.php index c6f7ec46..951d0aff 100644 --- a/src/Capability/Registry/ResourceTemplateReference.php +++ b/src/Capability/Registry/ResourceTemplateReference.php @@ -17,7 +17,6 @@ use Mcp\Schema\Content\ResourceContents; use Mcp\Schema\Content\TextResourceContents; use Mcp\Schema\ResourceTemplate; -use Psr\Container\ContainerInterface; /** * @phpstan-import-type Handler from ElementReference @@ -31,11 +30,6 @@ class ResourceTemplateReference extends ElementReference */ private array $variableNames; - /** - * @var array - */ - private array $uriVariables; - private string $uriTemplateRegex; /** @@ -53,22 +47,6 @@ public function __construct( $this->compileTemplate(); } - /** - * @deprecated - * Gets the resource template - * - * @return array array of ResourceContents objects - */ - public function read(ContainerInterface $container, string $uri): array - { - $arguments = array_merge($this->uriVariables, ['uri' => $uri]); - - $referenceHandler = new ReferenceHandler($container); - $result = $referenceHandler->handle($this, $arguments); - - return $this->formatResult($result, $uri, $this->resourceTemplate->mimeType); - } - /** * @return array */ @@ -87,34 +65,12 @@ public function matches(string $uri): bool } } - $this->uriVariables = $variables; - return true; } return false; } - private function compileTemplate(): void - { - $this->variableNames = []; - $regexParts = []; - - $segments = preg_split('/(\{\w+\})/', $this->resourceTemplate->uriTemplate, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); - - foreach ($segments as $segment) { - if (preg_match('/^\{(\w+)\}$/', $segment, $matches)) { - $varName = $matches[1]; - $this->variableNames[] = $varName; - $regexParts[] = '(?P<'.$varName.'>[^/]+)'; - } else { - $regexParts[] = preg_quote($segment, '#'); - } - } - - $this->uriTemplateRegex = '#^'.implode('', $regexParts).'$#'; - } - /** * Formats the raw result of a resource read operation into MCP ResourceContent items. * @@ -256,6 +212,26 @@ public function formatResult(mixed $readResult, string $uri, ?string $mimeType = throw new RuntimeException("Cannot format resource read result for URI '{$uri}'. Handler method returned unhandled type: ".\gettype($readResult)); } + private function compileTemplate(): void + { + $this->variableNames = []; + $regexParts = []; + + $segments = preg_split('/(\{\w+\})/', $this->resourceTemplate->uriTemplate, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); + + foreach ($segments as $segment) { + if (preg_match('/^\{(\w+)\}$/', $segment, $matches)) { + $varName = $matches[1]; + $this->variableNames[] = $varName; + $regexParts[] = '(?P<'.$varName.'>[^/]+)'; + } else { + $regexParts[] = preg_quote($segment, '#'); + } + } + + $this->uriTemplateRegex = '#^'.implode('', $regexParts).'$#'; + } + /** Guesses MIME type from string content (very basic) */ private function guessMimeTypeFromString(string $content): string {