DefinitionDiscoveryFactory.php in Libraries API 8.3
File
src/ExternalLibrary/Definition/DefinitionDiscoveryFactory.phpView source
<?php
namespace Drupal\libraries\ExternalLibrary\Definition;
use Drupal\Component\Serialization\SerializationInterface;
use Drupal\Core\Config\ConfigFactoryInterface;
use GuzzleHttp\ClientInterface;
/**
* Instantiates a library definition discovery based on configuration.
*/
class DefinitionDiscoveryFactory {
/**
* The configuration factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;
/**
* The serializer for local definition files.
*
* @var \Drupal\Component\Serialization\SerializationInterface
*/
protected $localSerializer;
/**
* The HTTP client used to fetch remote definitions.
*
* @var \GuzzleHttp\ClientInterface
*/
protected $httpClient;
/**
* The serializer for remote definitions.
*
* @var \Drupal\Component\Serialization\SerializationInterface
*/
protected $remoteSerializer;
/**
* Constructs a definition discovery factory.
*
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The configuration factory.
* @param \Drupal\Component\Serialization\SerializationInterface $local_serializer
* The serializer for local definition files.
* @param \GuzzleHttp\ClientInterface $http_client
* The HTTP client used to fetch remote definitions.
* @param \Drupal\Component\Serialization\SerializationInterface $remote_serializer
* The serializer for remote definitions.
*/
public function __construct(ConfigFactoryInterface $config_factory, SerializationInterface $local_serializer, ClientInterface $http_client, SerializationInterface $remote_serializer) {
$this->configFactory = $config_factory;
$this->localSerializer = $local_serializer;
$this->httpClient = $http_client;
$this->remoteSerializer = $remote_serializer;
}
/**
* Gets a library definition discovery.
*
* @return \Drupal\libraries\ExternalLibrary\Definition\DefinitionDiscoveryInterface
* The library definition discovery.
*/
public function get() {
$config = $this->configFactory
->get('libraries.settings');
if ($config
->get('definition.remote.enable')) {
$discovery = new ChainDefinitionDiscovery();
$local_discovery = new WritableFileDefinitionDiscovery($this->localSerializer, $config
->get('definition.local.path'));
$discovery
->addDiscovery($local_discovery);
foreach ($config
->get('definition.remote.urls') as $remote_url) {
$remote_discovery = new GuzzleDefinitionDiscovery($this->httpClient, $this->remoteSerializer, $remote_url);
$discovery
->addDiscovery($remote_discovery);
}
}
else {
$discovery = new FileDefinitionDiscovery($this->localSerializer, $config
->get('definition.local.path'));
}
return $discovery;
}
}
Classes
Name | Description |
---|---|
DefinitionDiscoveryFactory | Instantiates a library definition discovery based on configuration. |