diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index bd70c712..51c031aa 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -629,10 +629,10 @@ private function addSharedPluginNodes(ArrayNodeDefinition $pluginNode, $disableA ->canBeEnabled() ->addDefaultsIfNotSet() ->children() - ->scalarNode('name')->end() - ->scalarNode('key')->defaultNull()->end() - ->integerNode('tokens')->defaultValue(1)->end() - ->floatNode('max_time')->defaultNull()->end() + ->scalarNode('name')->isRequired()->info('Rate limiter factory service name, e.g. limiter.http_client for a rate limiter called http_client')->end() + ->scalarNode('key')->defaultNull()->info('Key to avoid sharing this rate limiter with other clients or other services. You can use the name of the client for example.')->end() + ->integerNode('tokens')->defaultValue(1)->info('How many tokens spending per request')->end() + ->floatNode('max_time')->defaultNull()->info('Maximum accepted waiting time in seconds')->end() ->end() ->end(); // End throttle plugin diff --git a/src/DependencyInjection/HttplugExtension.php b/src/DependencyInjection/HttplugExtension.php index cdcbfcf0..f5d63ceb 100644 --- a/src/DependencyInjection/HttplugExtension.php +++ b/src/DependencyInjection/HttplugExtension.php @@ -299,14 +299,14 @@ private function configurePluginByName($name, Definition $definition, array $con throw new InvalidConfigurationException('You need to require the Throttle Plugin to be able to use it: "composer require php-http/throttle-plugin".'); } - $key = $config['name'] ? '.'.$config['name'] : ''; + $limiterServiceId = $serviceId.'.'.$config['name']; $container - ->register($serviceId.$key, LimiterInterface::class) - ->setFactory([new Reference('limiter.'.$config['name']), 'create']) + ->register($limiterServiceId, LimiterInterface::class) + ->setFactory([new Reference($config['name']), 'create']) ->addArgument($config['key']) ->setPublic(false); - $definition->replaceArgument(0, new Reference($serviceId.$key)); + $definition->replaceArgument(0, new Reference($limiterServiceId)); $definition->setArgument('$tokens', $config['tokens']); $definition->setArgument('$maxTime', $config['max_time']);