Skip to content

Commit 7cb6fb1

Browse files
author
Maxim Solovev
committed
add ThrottlePlugin
1 parent b7ad2c1 commit 7cb6fb1

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/DependencyInjection/Configuration.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,17 @@ private function addSharedPluginNodes(ArrayNodeDefinition $pluginNode, $disableA
624624
->end()
625625
->end();
626626
// End error plugin
627+
628+
$throttle = $children->arrayNode('throttle')
629+
->canBeEnabled()
630+
->addDefaultsIfNotSet()
631+
->children()
632+
->scalarNode('name')->end()
633+
->scalarNode('tokens')->defaultValue(1)->end()
634+
->scalarNode('max_time')->defaultNull()->end()
635+
->end()
636+
->end();
637+
// End throttle plugin
627638
}
628639

629640
/**

src/DependencyInjection/HttplugExtension.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,15 @@ private function configurePluginByName($name, Definition $definition, array $con
292292

293293
break;
294294

295+
case 'throttle':
296+
$definition->replaceArgument(0, new Reference('rate_limiter.'.$config['name']));
297+
$definition->addArgument([
298+
'tokens' => $config['tokens'],
299+
'maxTime' => $config['max_time'],
300+
]);
301+
302+
break;
303+
295304
/* client specific plugins */
296305

297306
case 'add_host':

src/Resources/config/plugins.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@
2828
<service id="httplug.plugin.stopwatch" class="Http\Client\Common\Plugin\StopwatchPlugin" public="false" abstract="true">
2929
<argument />
3030
</service>
31+
<service id="httplug.plugin.throttle" class="Http\Client\Common\Plugin\ThrottlePlugin" public="false" abstract="true">
32+
<argument />
33+
</service>
3134

3235
<!-- client specific plugin definition prototypes -->
3336

0 commit comments

Comments
 (0)