*/ private $openApiRenderers = []; public function __construct(ContainerInterface $generatorLocator, OpenApiRenderer ...$openApiRenderers) { $this->generatorLocator = $generatorLocator; foreach ($openApiRenderers as $openApiRenderer) { $this->openApiRenderers[$openApiRenderer->getFormat()] = $openApiRenderer; } } /** * @throws InvalidArgumentException If the area to dump is not valid */ public function render(string $format, string $area, array $options = []): string { if (!$this->generatorLocator->has($area)) { throw new InvalidArgumentException(sprintf('Area "%s" is not supported.', $area)); } elseif (!array_key_exists($format, $this->openApiRenderers)) { throw new InvalidArgumentException(sprintf('Format "%s" is not supported.', $format)); } /** @var OpenApi $spec */ $spec = $this->generatorLocator->get($area)->generate(); return $this->openApiRenderers[$format]->render($spec, $options); } }