<?php
declare(strict_types=1);
namespace App\OpenApi;
use ApiPlatform\Core\OpenApi\Model\PathItem;
use ApiPlatform\Core\OpenApi\OpenApi;
use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface;
class CustomOpenApiFactory implements OpenApiFactoryInterface
{
private const HIDDEN_GET_PATHS = [
'/aliments/{id}',
'/closing_days/{id}',
'/contacts/{id}',
'/locales/{id}',
'/opening_hours/{id}',
'/taxes/{id}',
'/zones/{id}',
'/product_translations/{id}',
'/steps/{id}',
'/step_items/{id}',
'/pickup_hours/{id}',
'/ordering_hours/{id}',
'/domains/{id}',
'/category_translations/{id}',
];
public function __construct(
private OpenApiFactoryInterface $decorated,
private string $apiRoutePrefix,
) {
}
public function __invoke(array $context = []): OpenApi
{
$openApi = $this->decorated->__invoke($context);
$paths = $openApi->getPaths();
foreach (self::HIDDEN_GET_PATHS as $path) {
$pathItem = $paths->getPath($this->apiRoutePrefix . $path);
if ($pathItem instanceof PathItem) {
$paths->addPath($this->apiRoutePrefix . $path, $pathItem->withGet(null));
}
}
return $openApi;
}
}