From 33c123e8c2a33afdabb05a2c26ecd419385edcab Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 18 Jan 2016 12:28:03 +0000 Subject: [PATCH] Fix passing of options to remotefilesystem in composer repo --- src/Composer/Repository/ComposerRepository.php | 10 +++++++--- src/Composer/Util/RemoteFilesystem.php | 10 ++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index de9567536..1af0de7df 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -90,7 +90,11 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito $this->io = $io; $this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->url), 'a-z0-9.$'); $this->loader = new ArrayLoader(); - $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $this->config); + if ($rfs) { + $rfs = clone $rfs; + $rfs->setOptions($this->options); + } + $this->rfs = $rfs ?: Factory::createRemoteFilesystem($this->io, $this->config, $this->options); $this->eventDispatcher = $eventDispatcher; $this->repoConfig = $repoConfig; } @@ -190,7 +194,7 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito $url = str_replace('%query%', $query, $this->searchUrl); $hostname = parse_url($url, PHP_URL_HOST) ?: $url; - $json = $this->rfs->getContents($hostname, $url, false, $this->options); + $json = $this->rfs->getContents($hostname, $url, false); $results = JsonFile::parseJson($json, $url); return $results['results']; @@ -607,7 +611,7 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito } $hostname = parse_url($filename, PHP_URL_HOST) ?: $filename; - $json = $preFileDownloadEvent->getRemoteFilesystem()->getContents($hostname, $filename, false, $this->options); + $json = $preFileDownloadEvent->getRemoteFilesystem()->getContents($hostname, $filename, false); if ($sha256 && $sha256 !== hash('sha256', $json)) { if ($retries) { usleep(100000); diff --git a/src/Composer/Util/RemoteFilesystem.php b/src/Composer/Util/RemoteFilesystem.php index f9177a697..31124772e 100644 --- a/src/Composer/Util/RemoteFilesystem.php +++ b/src/Composer/Util/RemoteFilesystem.php @@ -113,6 +113,16 @@ class RemoteFilesystem return $this->options; } + /** + * Merges new options + * + * @return array $options + */ + public function setOptions(array $options) + { + $this->options = array_replace_recursive($this->options, $options); + } + public function isTlsDisabled() { return $this->disableTls === true;