| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- <?php
- namespace League\Flysystem\Plugin;
- use InvalidArgumentException;
- use League\Flysystem\FileNotFoundException;
- class GetWithMetadata extends AbstractPlugin
- {
- /**
- * Get the method name.
- *
- * @return string
- */
- public function getMethod()
- {
- return 'getWithMetadata';
- }
- /**
- * Get metadata for an object with required metadata.
- *
- * @param string $path path to file
- * @param string[] $metadata metadata keys
- *
- * @throws InvalidArgumentException
- * @throws FileNotFoundException
- *
- * @return array|false metadata
- */
- public function handle($path, array $metadata)
- {
- $object = $this->filesystem->getMetadata($path);
- if ( ! $object) {
- return false;
- }
- $keys = array_diff($metadata, array_keys($object));
- foreach ($keys as $key) {
- if ( ! method_exists($this->filesystem, $method = 'get' . ucfirst($key))) {
- throw new InvalidArgumentException('Could not fetch metadata: ' . $key);
- }
- $object[$key] = $this->filesystem->{$method}($path);
- }
- return $object;
- }
- }
|