From d4c9a9004a645289049312965ddc8cffc2ba31c6 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Thu, 21 Feb 2013 18:51:22 +0100 Subject: [PATCH] Add support for the hashed provider includes --- src/Composer/Repository/ComposerRepository.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index 985655d4a..86af9461c 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -392,11 +392,20 @@ class ComposerRepository extends ArrayRepository implements StreamableRepository if ($this->providersUrl && isset($data['provider-includes'])) { $includes = $data['provider-includes']; + foreach ($includes as $include => $metadata) { + $url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); + $cacheKey = str_replace(array('%hash%','$'), '', $include); + if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { + $includedData = json_decode($this->cache->read($cacheKey), true); + } else { + $includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); + } + + $this->loadProviderListings($includedData); + } } elseif (isset($data['providers-includes'])) { // BC layer for old-style providers-includes $includes = $data['providers-includes']; - } - if (!empty($includes)) { foreach ($includes as $include => $metadata) { if ($this->cache->sha256($include) === $metadata['sha256']) { $includedData = json_decode($this->cache->read($include), true);