Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function listKeys($prefix = '')
 {
     $dirs = [];
     $keys = [];
     foreach ($this->adapter->listContents() as $content) {
         if (empty($prefix) || 0 === strpos($content['path'], $prefix)) {
             if ('dir' === $content['type']) {
                 $dirs[] = $content['path'];
             } else {
                 $keys[] = $content['path'];
             }
         }
     }
     return ['keys' => $keys, 'dirs' => $dirs];
 }
 public function it_should_cache_contents_listings()
 {
     $this->cache->isComplete($dirname = 'dirname', $recursive = true)->willReturn(false);
     $response = [['path' => 'path.txt']];
     $this->adapter->listContents($dirname, $recursive)->willReturn($response);
     $this->cache->storeContents($dirname, $response, $recursive)->shouldBeCalled();
     $this->listContents($dirname, $recursive)->shouldBe($response);
 }
Пример #3
0
 /**
  * List the filesystem contents.
  *
  * @param string $directory
  * @param bool   $recursive
  *
  * @return array contents
  */
 public function listContents($directory = '', $recursive = false)
 {
     $directory = Util::normalizePath($directory);
     if ($this->cache->isComplete($directory, $recursive)) {
         return $this->cache->listContents($directory, $recursive);
     }
     $contents = $this->adapter->listContents($directory, $recursive);
     return $this->cache->storeContents($directory, $contents, $recursive);
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     if ($this->cache->isComplete($directory, $recursive)) {
         return $this->cache->listContents($directory, $recursive);
     }
     $result = $this->adapter->listContents($directory, $recursive);
     if ($result) {
         $this->cache->storeContents($directory, $result, $recursive);
     }
     return $result;
 }
Пример #5
0
 /**
  * {@inheritDoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     if ($directory) {
         $raw = $directory;
         $directory = $this->convertToPath($raw);
         $this->guardNoInvalidUuid($raw, $directory);
     } else {
         $directory = $this->uploadPath;
     }
     $this->guardInUploadPath($directory);
     return $this->adapter->listContents($directory, $recursive);
 }
 /**
  * Get the cached item.
  *
  * @param string $path The file path.
  *
  * @return array|false|mixed|void
  */
 private function getCached($path)
 {
     $key = $this->getCacheKey($path);
     if ($this->cache->contains($key)) {
         return $this->cache->fetch($key);
     }
     $metadata['metadata'] = $this->adapter->getMetadata($path);
     if ($metadata['metadata']['type'] === 'dir') {
         $metadata['contents'] = $this->adapter->listContents($path);
     }
     $this->cache->save($key, $metadata, $this->lifeTime);
     return $metadata;
 }
 /**
  * {@inheritdoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     $tmpResult = $this->mainAdapter->listContents($directory, $recursive);
     $inverseRef = [];
     foreach ($tmpResult as $index => $mainContent) {
         $inverseRef[$mainContent['path']] = $index;
     }
     $fallbackContents = $this->fallback->listContents($directory, $recursive);
     foreach ($fallbackContents as $fallbackContent) {
         if (!isset($inverseRef[$fallbackContent['path']])) {
             $tmpResult[] = $fallbackContent;
         }
     }
     return $tmpResult;
 }
Пример #8
0
 /**
  * List the filesystem contents.
  *
  * @param string $directory
  * @param bool   $recursive
  *
  * @return array contents
  */
 public function listContents($directory = '', $recursive = false)
 {
     $directory = Util::normalizePath($directory);
     $contents = $this->adapter->listContents($directory, $recursive);
     $mapper = function ($entry) use($directory, $recursive) {
         $entry = $entry + Util::pathinfo($entry['path']);
         if (!empty($directory) && strpos($entry['path'], $directory) === false) {
             return false;
         }
         if ($recursive === false && Util::dirname($entry['path']) !== $directory) {
             return false;
         }
         return $entry;
     };
     return array_values(array_filter(array_map($mapper, $contents)));
 }
Пример #9
0
 /**
  * {@inheritdoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     $contents = $this->adapter->listContents($this->getPath($directory), $recursive);
     $root = ltrim($this->root, '/');
     return array_map(function ($file) use($root) {
         $file['path'] = Path::makeRelative($file['path'], $root);
         if (array_key_exists('dirname', $file)) {
             $file['dirname'] = Path::makeRelative($file['dirname'], $root);
         }
         return $file;
     }, array_filter($contents, function ($file) use($root) {
         if (0 !== strpos($file['path'], $root)) {
             return false;
         }
         return true;
     }));
 }
Пример #10
0
 function it_lists_keys(AdapterInterface $adapter)
 {
     $adapter->listContents()->willReturn([['path' => 'folder', 'timestamp' => 1457104978, 'size' => 22, 'type' => 'dir']]);
     $this->listKeys()->shouldReturn(['keys' => [], 'dirs' => ['folder']]);
 }
Пример #11
0
 /**
  * {@inheritdoc}
  */
 public function listContents($directory = '', $recursive = false)
 {
     return $this->adapter->listContents($directory, $recursive);
 }
Пример #12
0
 /**
  * Get content from a dir.
  *
  * @param string $directory
  * @param string $typ
  * @param bool   $recursive
  *
  * @return array
  */
 private function getContents(string $directory, string $typ, bool $recursive = false) : array
 {
     $contents = $this->driver->listContents($directory, $recursive);
     return $this->filterContentsByType($contents, $typ);
 }