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; } }