* @license http://opensource.org/licenses/MIT MIT */ declare (strict_types=1); namespace DeliciousBrains\WP_Offload_Media\Gcp\Ramsey\Uuid\Provider\Node; use DeliciousBrains\WP_Offload_Media\Gcp\Ramsey\Uuid\Exception\NodeException; use DeliciousBrains\WP_Offload_Media\Gcp\Ramsey\Uuid\Provider\NodeProviderInterface; use DeliciousBrains\WP_Offload_Media\Gcp\Ramsey\Uuid\Type\Hexadecimal; /** * FallbackNodeProvider retrieves the system node ID by stepping through a list * of providers until a node ID can be obtained */ class FallbackNodeProvider implements NodeProviderInterface { /** * @var NodeProviderCollection */ private $nodeProviders; /** * @param NodeProviderCollection $providers Array of node providers */ public function __construct(NodeProviderCollection $providers) { $this->nodeProviders = $providers; } public function getNode() : Hexadecimal { $lastProviderException = null; foreach ($this->nodeProviders as $provider) { try { return $provider->getNode(); } catch (NodeException $exception) { $lastProviderException = $exception; continue; } } throw new NodeException('Unable to find a suitable node provider', 0, $lastProviderException); } }