[Server] Remove dead resource template handler code (#102)

This commit is contained in:
Christopher Hertel 2025-10-10 19:38:42 +02:00 • committed by GitHub
commit e2243bc2d9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -17,7 +17,6 @@ use Mcp\Schema\Content\EmbeddedResource;
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<string, string>
*/
private array $uriVariables;
private string $uriTemplateRegex;
/**
@ -53,22 +47,6 @@ class ResourceTemplateReference extends ElementReference
$this->compileTemplate();
}
/**
* @deprecated
* Gets the resource template
*
* @return array<int, ResourceContents> 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<int, string>
*/
@ -87,34 +65,12 @@ class ResourceTemplateReference extends ElementReference
}
}
$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 @@ class ResourceTemplateReference extends ElementReference
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
{