/**
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  *
  * @param InputInterface  $input
  * @param OutputInterface $output
  *
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /** @var KernelInterface $kernel */
     $kernel = $this->getContainer()->get('kernel');
     $bundle = $kernel->getBundle($input->getArgument('bundle'));
     $document = $this->documentRepository->get($input->getArgument('file'));
     $this->generator->setSkeletonDirs(__DIR__ . '/../Resources/skeleton');
     $this->generator->generate($bundle, $document, $input->getOption('namespace'));
 }
Пример #2
0
 /**
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     $swaggerDocument = $this->schemaRepository->get($request->get('_definition'));
     $operationDefinition = $swaggerDocument->getOperationDefinition($request->getPathInfo(), $request->getMethod());
     $this->processor->process($request, $operationDefinition);
 }
 /**
  * @param FilterResponseEvent $event
  */
 public function onKernelResponse(FilterResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     $headers = $event->getResponse()->headers;
     $document = $this->documentRepository->get($request->attributes->get('_definition'));
     switch ($document->getDefinition()->info->version) {
         case '2.0.0':
             $headers->set('Content-Type', 'application/vnd.api+json');
             break;
         default:
             //noop
     }
 }
 /**
  * @param GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if (!$event->isMasterRequest()) {
         return;
     }
     $request = $event->getRequest();
     if ($request->getContent()) {
         $document = $this->documentRepository->get($request->attributes->get('_definition'));
         switch ($document->getDefinition()->info->version) {
             case '2.0.0':
                 if ($request->getContentType() !== 'application/vnd.api+json') {
                     $event->setResponse(new Response('', Response::HTTP_NOT_ACCEPTABLE));
                 }
                 break;
             default:
                 //noop
         }
     }
 }
 /**
  * @param GetResponseForControllerResultEvent $event
  */
 public function onKernelView(GetResponseForControllerResultEvent $event)
 {
     $request = $event->getRequest();
     $document = $this->documentRepository->get($request->attributes->get('_definition'));
     switch ($document->getDefinition()->info->version) {
         case '2.0.0':
             $result = $event->getControllerResult();
             if (!$result instanceof Resource && !$result instanceof Document) {
                 $result = new Resource($result, $this->serializer);
             }
             if ($result instanceof Resource) {
                 $result = new Document($result);
             }
             if ($result instanceof Document) {
                 $result->addLink('self', $event->getRequest()->getPathInfo());
                 $event->setControllerResult($result->toArray());
             }
             break;
         default:
             //noop
     }
 }
Пример #6
0
 /**
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  *
  * @param mixed $resource
  * @param null  $type
  *
  * @return RouteCollection
  */
 public function load($resource, $type = null)
 {
     $resource = (string) $resource;
     if (in_array($resource, $this->loadedSpecs)) {
         throw new \RuntimeException("Resource '{$resource}' was already loaded");
     }
     $document = $this->documentRepository->get($resource);
     $routes = new RouteCollection();
     foreach ($document->getPathDefinitions() as $path => $methods) {
         $relativePath = ltrim($path, '/');
         $resourceName = strpos($relativePath, '/') ? substr($relativePath, 0, strpos($relativePath, '/')) : $relativePath;
         foreach ($methods as $methodName => $operationSpec) {
             $operationName = isset($operationSpec['operationId']) ? $operationSpec['operationId'] : $methodName;
             $defaults = ['_controller' => "swagger.controller.{$resourceName}:{$operationName}", '_definition' => $resource];
             $requirements = [];
             $route = new Route($path, $defaults, $requirements);
             $route->setMethods($methodName);
             $routeName = "swagger.{$this->createRouteIdFromPath($path)}.{$operationName}";
             $routes->add($routeName, $route);
         }
     }
     $this->loadedSpecs[] = $resource;
     return $routes;
 }
 /**
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  *
  * @param InputInterface  $input
  * @param OutputInterface $output
  *
  * @return void
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $document = $this->documentRepository->get($input->getArgument('file'));
     $this->fixer->fix($document);
     $document->write($input->getOption('out'));
 }
 /**
  * @test
  */
 public function canUsePathPrefix()
 {
     $repository = new DocumentRepository('src/Tests/Functional/PetStore');
     $document = $repository->get('app/petstore.yml');
     $this->assertInstanceOf('KleijnWeb\\SwaggerBundle\\Document\\SwaggerDocument', $document);
 }