X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Flibraries%2Fsrc%2FExternalLibrary%2FDefinition%2FDefinitionDiscoveryFactory.php;fp=web%2Fmodules%2Fcontrib%2Flibraries%2Fsrc%2FExternalLibrary%2FDefinition%2FDefinitionDiscoveryFactory.php;h=970385e5f0ebacd40ab50952b84a55377207bd70;hp=0000000000000000000000000000000000000000;hb=8acec36f19c470dfcda1ae2336826a782f41874c;hpb=e0411c4e83ba0d079034db83c3f7f55be24a0e35 diff --git a/web/modules/contrib/libraries/src/ExternalLibrary/Definition/DefinitionDiscoveryFactory.php b/web/modules/contrib/libraries/src/ExternalLibrary/Definition/DefinitionDiscoveryFactory.php new file mode 100644 index 000000000..970385e5f --- /dev/null +++ b/web/modules/contrib/libraries/src/ExternalLibrary/Definition/DefinitionDiscoveryFactory.php @@ -0,0 +1,104 @@ +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; + } + +}