From ed65625126c42354f3b27a3ed922eb75de8f57d7 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 28 Nov 2018 08:59:45 +0100 Subject: [PATCH] Handle custom http options cleaner in ComposerRepo --- src/Composer/Repository/ComposerRepository.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index 8c92d3e4d..939fb84ba 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -102,11 +102,6 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito $this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $this->url), 'a-z0-9.$'); $this->versionParser = new VersionParser(); $this->loader = new ArrayLoader($this->versionParser); - if ($this->options) { - // TODO solve this somehow - should be sent at request time not on the instance - $httpDownloader = clone $httpDownloader; - $httpDownloader->setOptions($this->options); - } $this->httpDownloader = $httpDownloader; $this->eventDispatcher = $eventDispatcher; $this->repoConfig = $repoConfig; @@ -263,7 +258,7 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { $url = str_replace(array('%query%', '%type%'), array($query, $type), $this->searchUrl); - $search = $this->httpDownloader->get($url)->decodeJson(); + $search = $this->httpDownloader->get($url, $this->options)->decodeJson(); if (empty($search['results'])) { return array(); @@ -826,7 +821,7 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito $httpDownloader = $preFileDownloadEvent->getHttpDownloader(); } - $response = $httpDownloader->get($filename); + $response = $httpDownloader->get($filename, $this->options); $json = $response->getBody(); if ($sha256 && $sha256 !== hash('sha256', $json)) { // undo downgrade before trying again if http seems to be hijacked or modifying content somehow @@ -917,7 +912,11 @@ class ComposerRepository extends ArrayRepository implements ConfigurableReposito $httpDownloader = $preFileDownloadEvent->getHttpDownloader(); } - $options = array('http' => array('header' => array('If-Modified-Since: '.$lastModifiedTime))); + $options = $this->options; + if (isset($options['http']['header'])) { + $options['http']['header'] = (array) $options['http']['header']; + } + $options['http']['header'][] = array('If-Modified-Since: '.$lastModifiedTime); $response = $httpDownloader->get($filename, $options); $json = $response->getBody(); if ($json === '' && $response->getStatusCode() === 304) {