Fix an issue caused by #1007

This commit is contained in:
Guilhem Niot 2017-06-22 22:28:30 +02:00
parent 6776d7880e
commit 0bd45e6486
4 changed files with 22 additions and 58 deletions

View File

@ -15,9 +15,13 @@ use FOS\RestBundle\Controller\Annotations\ParamInterface;
use phpDocumentor\Reflection\DocBlockFactory;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Definition;
use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\Routing\RouteCollection;
use Nelmio\ApiDocBundle\Routing\FilteredRouteCollectionBuilder;
final class NelmioApiDocExtension extends Extension implements PrependExtensionInterface
{
@ -40,8 +44,22 @@ final class NelmioApiDocExtension extends Extension implements PrependExtensionI
$loader->load('services.xml');
// Filter routes
$routeCollectionBuilder = $container->getDefinition('nelmio_api_doc.filtered_route_collection_builder');
$routeCollectionBuilder->replaceArgument(0, $config['routes']['path_patterns']);
$routesDefinition = (new Definition(RouteCollection::class))
->setFactory([new Reference('router'), 'getRouteCollection']);
if (0 === count($config['routes']['path_patterns'])) {
$container->setDefinition('nelmio_api_doc.routes', $routesDefinition)
->setPublic(false);
} else {
$container->register('nelmio_api_doc.routes', RouteCollection::class)
->setPublic(false)
->setFactory([
(new Definition(FilteredRouteCollectionBuilder::class))
->addArgument($config['routes']['path_patterns']),
'filter']
)
->addArgument($routesDefinition);
}
// Import services needed for each library
$loader->load('swagger_php.xml');

View File

@ -21,19 +21,6 @@
<argument type="service" id="controller_name_converter" />
</service>
<service id="nelmio_api_doc.filtered_route_collection" class="Symfony\Component\Routing\RouteCollection" public="false">
<factory service="nelmio_api_doc.filtered_route_collection_builder" method="filter" />
<argument type="service">
<service class="Symfony\Component\Routing\RouteCollection">
<factory service="router" method="getRouteCollection" />
</service>
</argument>
</service>
<service id="nelmio_api_doc.filtered_route_collection_builder" class="Nelmio\ApiDocBundle\Routing\FilteredRouteCollectionBuilder" public="false">
<argument type="collection" /> <!-- Path patterns -->
</service>
<!-- Describers -->
<service id="nelmio_api_doc.describers.config" class="Nelmio\ApiDocBundle\Describer\ExternalDocDescriber" public="false">
<argument type="collection" />
@ -42,7 +29,7 @@
</service>
<service id="nelmio_api_doc.describers.route" class="Nelmio\ApiDocBundle\Describer\RouteDescriber" public="false">
<argument type="service" id="nelmio_api_doc.filtered_route_collection" />
<argument type="service" id="nelmio_api_doc.routes" />
<argument type="service" id="nelmio_api_doc.controller_reflector" />
<argument type="collection" />

View File

@ -5,7 +5,7 @@
<services>
<service id="nelmio_api_doc.describers.swagger_php" class="Nelmio\ApiDocBundle\Describer\SwaggerPhpDescriber" public="false">
<argument type="service" id="nelmio_api_doc.filtered_route_collection" />
<argument type="service" id="nelmio_api_doc.routes" />
<argument type="service" id="nelmio_api_doc.controller_reflector" />
<argument type="service" id="annotation_reader" />

View File

@ -21,46 +21,5 @@ window.onload = () => {
layout: 'StandaloneLayout'
});
if (data.oauth.enabled) {
ui.initOAuth({
clientId: data.oauth.clientId,
clientSecret: data.oauth.clientSecret,
realm: data.oauth.type,
appName: data.spec.info.title,
scopeSeparator: ' ',
additionalQueryStringParams: {}
});
}
window.ui = ui;
if (!data.operationId) return;
const observer = new MutationObserver(function (mutations, self) {
const op = document.getElementById(`operations,${data.method}-${data.path},${data.shortName}`);
if (!op) return;
self.disconnect();
op.querySelector('.opblock-summary').click();
op.querySelector('.try-out__btn').click();
if (data.id) {
const inputId = op.querySelector('.parameters input[placeholder="id"]');
inputId.value = data.id;
inputId.dispatchEvent(new Event('input', { bubbles: true }));
}
for (let input of op.querySelectorAll('.parameters input')) {
if (input.placeholder in data.queryParameters) {
input.value = data.queryParameters[input.placeholder];
input.dispatchEvent(new Event('input', { bubbles: true }));
}
}
op.querySelector('.execute').click();
op.scrollIntoView();
});
observer.observe(document, {childList: true, subtree: true});
};