mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-09 02:59:27 +03:00
Add type hints
This commit is contained in:
parent
684eb375ae
commit
d7c05edffc
@ -3,7 +3,6 @@ language: php
|
||||
php:
|
||||
- 7.0
|
||||
- 7.1
|
||||
- hhvm
|
||||
|
||||
sudo: false
|
||||
|
||||
|
@ -11,20 +11,20 @@
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle;
|
||||
|
||||
use EXSyst\Bundle\ApiDocBundle\Extractor\ExtractorInterface;
|
||||
use EXSyst\Bundle\ApiDocBundle\Describer\DescriberInterface;
|
||||
use gossi\swagger\Swagger;
|
||||
|
||||
class ApiDocGenerator
|
||||
{
|
||||
private $swagger;
|
||||
private $extractors;
|
||||
private $describers;
|
||||
|
||||
/**
|
||||
* @param ExtractorInterface[] $extractors
|
||||
* @param DescriberInterface[] $describers
|
||||
*/
|
||||
public function __construct(array $extractors)
|
||||
public function __construct(array $describers)
|
||||
{
|
||||
$this->extractors = $extractors;
|
||||
$this->describers = $describers;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -37,8 +37,8 @@ class ApiDocGenerator
|
||||
}
|
||||
|
||||
$this->swagger = new Swagger();
|
||||
foreach ($this->extractors as $extractor) {
|
||||
$extractor->extractIn($this->swagger);
|
||||
foreach ($this->describers as $describer) {
|
||||
$describer->describe($this->swagger);
|
||||
}
|
||||
|
||||
return $this->swagger;
|
||||
|
@ -15,14 +15,14 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class AddExtractorsPass implements CompilerPassInterface
|
||||
class AddDescribersPass implements CompilerPassInterface
|
||||
{
|
||||
use PriorityTaggedServiceTrait;
|
||||
|
||||
public function process(ContainerBuilder $container)
|
||||
{
|
||||
$extractors = $this->findAndSortTaggedServices('exsyst_api_doc.extractor', $container);
|
||||
$describers = $this->findAndSortTaggedServices('exsyst_api_doc.describer', $container);
|
||||
|
||||
$container->getDefinition('exsyst_api_doc.generator')->replaceArgument(0, $extractors);
|
||||
$container->getDefinition('exsyst_api_doc.generator')->replaceArgument(0, $describers);
|
||||
}
|
||||
}
|
@ -15,14 +15,14 @@ use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
|
||||
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
|
||||
class AddRoutingExtractorsPass implements CompilerPassInterface
|
||||
class AddRouteDescribersPass implements CompilerPassInterface
|
||||
{
|
||||
use PriorityTaggedServiceTrait;
|
||||
|
||||
public function process(ContainerBuilder $container)
|
||||
{
|
||||
$extractors = $this->findAndSortTaggedServices('exsyst_api_doc.routing_extractor', $container);
|
||||
$routeDescribers = $this->findAndSortTaggedServices('exsyst_api_doc.route_describer', $container);
|
||||
|
||||
$container->getDefinition('exsyst_api_doc.extractors.routing')->replaceArgument(2, $extractors);
|
||||
$container->getDefinition('exsyst_api_doc.describers.route')->replaceArgument(2, $routeDescribers);
|
||||
}
|
||||
}
|
@ -9,11 +9,11 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Describer;
|
||||
|
||||
use gossi\swagger\Swagger;
|
||||
|
||||
interface ExtractorInterface
|
||||
interface DescriberInterface
|
||||
{
|
||||
public function extractIn(Swagger $api);
|
||||
public function describe(Swagger $api);
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Describer;
|
||||
|
||||
use Doctrine\Common\Util\ClassUtils;
|
||||
use EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteExtractorInterface;
|
||||
@ -18,25 +18,25 @@ use Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser;
|
||||
use Symfony\Component\Routing\Route;
|
||||
use Symfony\Component\Routing\RouterInterface;
|
||||
|
||||
class RoutingExtractor implements ExtractorInterface
|
||||
class RouteDescriber implements DescriberInterface
|
||||
{
|
||||
private $routeExtractors;
|
||||
private $routeDescribers;
|
||||
|
||||
/**
|
||||
* @param RouterInterface $router
|
||||
* @param ControllerNameParser $controllerNameParser
|
||||
* @param RouteExtractorInterface[] $extractors
|
||||
* @param RouteDescriberInterface[] $routeDescribers
|
||||
*/
|
||||
public function __construct(RouterInterface $router, ControllerNameParser $controllerNameParser, array $routeExtractors)
|
||||
public function __construct(RouterInterface $router, ControllerNameParser $controllerNameParser, array $routeDescribers)
|
||||
{
|
||||
$this->router = $router;
|
||||
$this->controllerNameParser = $controllerNameParser;
|
||||
$this->routeExtractors = $routeExtractors;
|
||||
$this->routeDescribers = $routeDescribers;
|
||||
}
|
||||
|
||||
public function extractIn(Swagger $swagger)
|
||||
public function describe(Swagger $swagger)
|
||||
{
|
||||
if (0 === count($this->routeExtractors)) {
|
||||
if (0 === count($this->routeDescribers)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -44,8 +44,8 @@ class RoutingExtractor implements ExtractorInterface
|
||||
// if able to resolve the controller
|
||||
if ($method = $this->getReflectionMethod($route->getDefault('_controller'))) {
|
||||
// Extract as many informations as possible about this route
|
||||
foreach ($this->routeExtractors as $extractor) {
|
||||
$extractor->extractIn($swagger, $route, $method);
|
||||
foreach ($this->routeDescribers as $describer) {
|
||||
$describer->describe($swagger, $route, $method);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -68,7 +68,7 @@ class RoutingExtractor implements ExtractorInterface
|
||||
*
|
||||
* @return \ReflectionMethod|null
|
||||
*/
|
||||
private function getReflectionMethod($controller)
|
||||
private function getReflectionMethod(string $controller)
|
||||
{
|
||||
if (false === strpos($controller, '::') && 2 === substr_count($controller, ':')) {
|
||||
$controller = $this->controllerNameParser->parse($controller);
|
@ -11,8 +11,8 @@
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle;
|
||||
|
||||
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddExtractorsPass;
|
||||
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddRoutingExtractorsPass;
|
||||
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddDescribersPass;
|
||||
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\Compiler\AddRouteDescribersPass;
|
||||
use EXSyst\Bundle\ApiDocBundle\DependencyInjection\EXSystApiDocExtension;
|
||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\HttpKernel\Bundle\Bundle;
|
||||
@ -24,8 +24,8 @@ class EXSystApiDocBundle extends Bundle
|
||||
*/
|
||||
public function build(ContainerBuilder $container)
|
||||
{
|
||||
$container->addCompilerPass(new AddExtractorsPass());
|
||||
$container->addCompilerPass(new AddRoutingExtractorsPass());
|
||||
$container->addCompilerPass(new AddDescribersPass());
|
||||
$container->addCompilerPass(new AddRouteDescribersPass());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -9,27 +9,27 @@
|
||||
</service>
|
||||
|
||||
<!-- Extractors -->
|
||||
<service id="exsyst_api_doc.extractors.routing" class="EXSyst\Bundle\ApiDocBundle\Extractor\RoutingExtractor" public="false">
|
||||
<service id="exsyst_api_doc.describers.route" class="EXSyst\Bundle\ApiDocBundle\Describer\RouteDescriber" public="false">
|
||||
<argument type="service" id="router" />
|
||||
<argument type="service" id="controller_name_converter" />
|
||||
<argument type="collection" />
|
||||
|
||||
<tag name="exsyst_api_doc.extractor" priority="-100" />
|
||||
<tag name="exsyst_api_doc.describer" priority="-100" />
|
||||
</service>
|
||||
|
||||
<!-- Routing Extractors -->
|
||||
<service id="exsyst_api_doc.routing_extractors.route_metadata" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\RouteMetadataExtractor" public="false">
|
||||
<tag name="exsyst_api_doc.routing_extractor" priority="-50" />
|
||||
<service id="exsyst_api_doc.route_describers.route_metadata" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\RouteMetadataDescriber" public="false">
|
||||
<tag name="exsyst_api_doc.route_describer" priority="-50" />
|
||||
</service>
|
||||
|
||||
<service id="exsyst_api_doc.routing_extractors.php_doc" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\PhpDocExtractor" public="false">
|
||||
<tag name="exsyst_api_doc.routing_extractor" priority="-70" />
|
||||
<service id="exsyst_api_doc.route_describers.php_doc" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\PhpDocDescriber" public="false">
|
||||
<tag name="exsyst_api_doc.route_describer" priority="-70" />
|
||||
</service>
|
||||
|
||||
<service id="exsyst_api_doc.routing_extractors.nelmio_annotation" class="EXSyst\Bundle\ApiDocBundle\Extractor\Routing\NelmioAnnotationExtractor" public="false">
|
||||
<service id="exsyst_api_doc.route_describers.nelmio_annotation" class="EXSyst\Bundle\ApiDocBundle\RouteDescriber\NelmioAnnotationDescriber" public="false">
|
||||
<argument type="service" id="annotation_reader" />
|
||||
|
||||
<tag name="exsyst_api_doc.routing_extractor" priority="-100" />
|
||||
<tag name="exsyst_api_doc.route_describer" priority="-100" />
|
||||
</service>
|
||||
</services>
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
|
||||
|
||||
use Doctrine\Common\Annotations\Reader;
|
||||
use gossi\swagger\Parameter;
|
||||
@ -17,9 +17,9 @@ use gossi\swagger\Swagger;
|
||||
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
class NelmioAnnotationExtractor implements RouteExtractorInterface
|
||||
class NelmioAnnotationDescriber implements RouteDescriberInterface
|
||||
{
|
||||
use RouteExtractorTrait;
|
||||
use RouteDescriberTrait;
|
||||
|
||||
private $annotationReader;
|
||||
|
||||
@ -28,7 +28,7 @@ class NelmioAnnotationExtractor implements RouteExtractorInterface
|
||||
$this->annotationReader = $annotationReader;
|
||||
}
|
||||
|
||||
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
{
|
||||
$annotation = $this->annotationReader->getMethodAnnotation($reflectionMethod, ApiDoc::class);
|
||||
if (null === $annotation) {
|
@ -9,16 +9,16 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
|
||||
|
||||
use gossi\swagger\Swagger;
|
||||
use phpDocumentor\Reflection\DocBlockFactory;
|
||||
use phpDocumentor\Reflection\DocBlockFactoryInterface;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
class PhpDocExtractor implements RouteExtractorInterface
|
||||
class PhpDocDescriber implements RouteDescriberInterface
|
||||
{
|
||||
use RouteExtractorTrait;
|
||||
use RouteDescriberTrait;
|
||||
|
||||
private $docBlockFactory;
|
||||
|
||||
@ -30,7 +30,7 @@ class PhpDocExtractor implements RouteExtractorInterface
|
||||
$this->docBlockFactory = $docBlockFactory;
|
||||
}
|
||||
|
||||
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
{
|
||||
$classDocBlock = null;
|
||||
$docBlock = null;
|
@ -9,12 +9,12 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
|
||||
|
||||
use gossi\swagger\Swagger;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
interface RouteExtractorInterface
|
||||
interface RouteDescriberInterface
|
||||
{
|
||||
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod);
|
||||
public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod);
|
||||
}
|
@ -9,7 +9,7 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
|
||||
|
||||
use gossi\swagger\Operation;
|
||||
use gossi\swagger\Swagger;
|
||||
@ -18,7 +18,7 @@ use Symfony\Component\Routing\Route;
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
trait RouteExtractorTrait
|
||||
trait RouteDescriberTrait
|
||||
{
|
||||
/**
|
||||
* @internal
|
@ -9,16 +9,16 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace EXSyst\Bundle\ApiDocBundle\Extractor\Routing;
|
||||
namespace EXSyst\Bundle\ApiDocBundle\RouteDescriber;
|
||||
|
||||
use gossi\swagger\Swagger;
|
||||
use Symfony\Component\Routing\Route;
|
||||
|
||||
class RouteMetadataExtractor implements RouteExtractorInterface
|
||||
class RouteMetadataDescriber implements RouteDescriberInterface
|
||||
{
|
||||
use RouteExtractorTrait;
|
||||
use RouteDescriberTrait;
|
||||
|
||||
public function extractIn(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
public function describe(Swagger $api, Route $route, \ReflectionMethod $reflectionMethod)
|
||||
{
|
||||
foreach ($this->getOperations($api, $route) as $operation) {
|
||||
$operation->getSchemes()->addAll($route->getSchemes());
|
Loading…
x
Reference in New Issue
Block a user