diff options
| author | Carson Fleming <cflems@cflems.net> | 2017-03-02 22:49:24 -0500 |
|---|---|---|
| committer | Carson Fleming <cflems@cflems.net> | 2017-03-02 22:49:24 -0500 |
| commit | b76e2ff898b23745d4c9aaee49eeb7d88f2896ab (patch) | |
| tree | 9b794be8db310a575d70165d9ebde0a183b61b01 /inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php | |
| parent | bfcc9f7a7656a2db0c905b3c13114664f00f6c37 (diff) | |
| download | bulletin-b76e2ff898b23745d4c9aaee49eeb7d88f2896ab.tar.gz | |
Updated mailgun plugin
Diffstat (limited to 'inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php')
| -rw-r--r-- | inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php b/inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php new file mode 100644 index 0000000..2666fb3 --- /dev/null +++ b/inc/mailgun/php-http/discovery/src/Strategy/PuliBetaStrategy.php @@ -0,0 +1,91 @@ +<?php + +namespace Http\Discovery\Strategy; + +use Http\Discovery\Exception\PuliUnavailableException; +use Puli\Discovery\Api\Discovery; +use Puli\GeneratedPuliFactory; + +/** + * Find candidates using Puli. + * + * @internal + * @final + * + * @author David de Boer <david@ddeboer.nl> + * @author Márk Sági-Kazár <mark.sagikazar@gmail.com> + */ +class PuliBetaStrategy implements DiscoveryStrategy +{ + /** + * @var GeneratedPuliFactory + */ + protected static $puliFactory; + + /** + * @var Discovery + */ + protected static $puliDiscovery; + + /** + * @return GeneratedPuliFactory + * + * @throws PuliUnavailableException + */ + private static function getPuliFactory() + { + if (null === self::$puliFactory) { + if (!defined('PULI_FACTORY_CLASS')) { + throw new PuliUnavailableException('Puli Factory is not available'); + } + + $puliFactoryClass = PULI_FACTORY_CLASS; + + if (!class_exists($puliFactoryClass)) { + throw new PuliUnavailableException('Puli Factory class does not exist'); + } + + self::$puliFactory = new $puliFactoryClass(); + } + + return self::$puliFactory; + } + + /** + * Returns the Puli discovery layer. + * + * @return Discovery + * + * @throws PuliUnavailableException + */ + private static function getPuliDiscovery() + { + if (!isset(self::$puliDiscovery)) { + $factory = self::getPuliFactory(); + $repository = $factory->createRepository(); + + self::$puliDiscovery = $factory->createDiscovery($repository); + } + + return self::$puliDiscovery; + } + + /** + * {@inheritdoc} + */ + public static function getCandidates($type) + { + $returnData = []; + $bindings = self::getPuliDiscovery()->findBindings($type); + + foreach ($bindings as $binding) { + $condition = true; + if ($binding->hasParameterValue('depends')) { + $condition = $binding->getParameterValue('depends'); + } + $returnData[] = ['class' => $binding->getClassName(), 'condition' => $condition]; + } + + return $returnData; + } +} |
