src/OpenApi/CustomOpenApiFactory.php line 38

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\OpenApi;
  4. use ApiPlatform\Core\OpenApi\Model\PathItem;
  5. use ApiPlatform\Core\OpenApi\OpenApi;
  6. use ApiPlatform\OpenApi\Factory\OpenApiFactoryInterface;
  7. class CustomOpenApiFactory implements OpenApiFactoryInterface
  8. {
  9.     private const HIDDEN_GET_PATHS = [
  10.         '/aliments/{id}',
  11.         '/closing_days/{id}',
  12.         '/contacts/{id}',
  13.         '/locales/{id}',
  14.         '/opening_hours/{id}',
  15.         '/taxes/{id}',
  16.         '/zones/{id}',
  17.         '/product_translations/{id}',
  18.         '/steps/{id}',
  19.         '/step_items/{id}',
  20.         '/pickup_hours/{id}',
  21.         '/ordering_hours/{id}',
  22.         '/domains/{id}',
  23.         '/category_translations/{id}',
  24.     ];
  25.     public function __construct(
  26.         private OpenApiFactoryInterface $decorated,
  27.         private string $apiRoutePrefix,
  28.     ) {
  29.     }
  30.     public function __invoke(array $context = []): OpenApi
  31.     {
  32.         $openApi $this->decorated->__invoke($context);
  33.         $paths $openApi->getPaths();
  34.         foreach (self::HIDDEN_GET_PATHS as $path) {
  35.             $pathItem $paths->getPath($this->apiRoutePrefix $path);
  36.             if ($pathItem instanceof PathItem) {
  37.                 $paths->addPath($this->apiRoutePrefix $path$pathItem->withGet(null));
  38.             }
  39.         }
  40.         return $openApi;
  41.     }
  42. }