From aa70018abe82e8e6efb7422d78e84b437d36b1b0 Mon Sep 17 00:00:00 2001 From: Vyacheslav Slinko Date: Wed, 17 Oct 2012 17:12:36 +0400 Subject: [PATCH 1/2] Make documentation on demand configurable --- DependencyInjection/Configuration.php | 1 + DependencyInjection/NelmioApiDocExtension.php | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 7a03f78..8fec1b8 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -23,6 +23,7 @@ class Configuration implements ConfigurationInterface ->root('nelmio_api_doc') ->children() ->scalarNode('name')->defaultValue('API documentation')->end() + ->booleanNode('on_demand')->defaultTrue()->end() ->arrayNode('sandbox') ->addDefaultsIfNotSet() ->children() diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php index 321a2cc..cc85324 100644 --- a/DependencyInjection/NelmioApiDocExtension.php +++ b/DependencyInjection/NelmioApiDocExtension.php @@ -34,9 +34,12 @@ class NelmioApiDocExtension extends Extension $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('formatters.xml'); - $loader->load('request_listener.xml'); $loader->load('services.xml'); + if ($config['on_demand']) { + $loader->load('request_listener.xml'); + } + if (isset($config['sandbox']['authentication'])) { $container->setParameter('nelmio_api_doc.sandbox.authentication', $config['sandbox']['authentication']); } From ffd9feb797a0f9e6a895cf1a4f14b95fe6bbebbc Mon Sep 17 00:00:00 2001 From: Vyacheslav Slinko Date: Wed, 17 Oct 2012 18:44:14 +0400 Subject: [PATCH 2/2] Improved request_listener configuration --- DependencyInjection/Configuration.php | 12 +++++++++++- DependencyInjection/NelmioApiDocExtension.php | 3 ++- EventListener/RequestListener.php | 10 ++++++++-- Resources/config/request_listener.xml | 1 + 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 8fec1b8..8d32ae2 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -23,7 +23,17 @@ class Configuration implements ConfigurationInterface ->root('nelmio_api_doc') ->children() ->scalarNode('name')->defaultValue('API documentation')->end() - ->booleanNode('on_demand')->defaultTrue()->end() + ->arrayNode('request_listener') + ->beforeNormalization() + ->ifTrue(function ($a) { return is_bool($a); }) + ->then(function ($a) { return array('enabled' => $a); }) + ->end() + ->addDefaultsIfNotSet() + ->children() + ->booleanNode('enabled')->defaultTrue()->end() + ->scalarNode('parameter')->defaultValue('_doc')->end() + ->end() + ->end() ->arrayNode('sandbox') ->addDefaultsIfNotSet() ->children() diff --git a/DependencyInjection/NelmioApiDocExtension.php b/DependencyInjection/NelmioApiDocExtension.php index cc85324..b29b021 100644 --- a/DependencyInjection/NelmioApiDocExtension.php +++ b/DependencyInjection/NelmioApiDocExtension.php @@ -36,7 +36,8 @@ class NelmioApiDocExtension extends Extension $loader->load('formatters.xml'); $loader->load('services.xml'); - if ($config['on_demand']) { + if ($config['request_listener']['enabled']) { + $container->setParameter('nelmio_api_doc.request_listener.parameter', $config['request_listener']['parameter']); $loader->load('request_listener.xml'); } diff --git a/EventListener/RequestListener.php b/EventListener/RequestListener.php index 8fffc92..ef47e57 100644 --- a/EventListener/RequestListener.php +++ b/EventListener/RequestListener.php @@ -30,10 +30,16 @@ class RequestListener */ protected $formatter; - public function __construct(ApiDocExtractor $extractor, FormatterInterface $formatter) + /** + * @var string + */ + protected $parameter; + + public function __construct(ApiDocExtractor $extractor, FormatterInterface $formatter, $parameter) { $this->extractor = $extractor; $this->formatter = $formatter; + $this->parameter = $parameter; } /** @@ -47,7 +53,7 @@ class RequestListener $request = $event->getRequest(); - if (!$request->query->get('_doc')) { + if (!$request->query->has($this->parameter)) { return; } diff --git a/Resources/config/request_listener.xml b/Resources/config/request_listener.xml index eef6b8c..53a774b 100644 --- a/Resources/config/request_listener.xml +++ b/Resources/config/request_listener.xml @@ -11,6 +11,7 @@ + %nelmio_api_doc.request_listener.parameter%