Skip to content

Commit

Permalink
Merge pull request #1731 from jnoordsij/add-decorated-adapter
Browse files Browse the repository at this point in the history
Add decorated adapter abstract class
  • Loading branch information
frankdejonge authored Nov 18, 2023
2 parents 40581f2 + 925db22 commit 5ed8f6f
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 51 deletions.
100 changes: 100 additions & 0 deletions src/DecoratedAdapter.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
<?php

declare(strict_types=1);

namespace League\Flysystem;

use League\Flysystem\Config;
use League\Flysystem\FileAttributes;

abstract class DecoratedAdapter implements FilesystemAdapter
{
public function __construct(protected FilesystemAdapter $adapter)
{
}

public function fileExists(string $path): bool
{
return $this->adapter->fileExists($path);
}

public function directoryExists(string $path): bool
{
return $this->adapter->directoryExists($path);
}

public function write(string $path, string $contents, Config $config): void
{
$this->adapter->write($path, $contents, $config);
}

public function writeStream(string $path, $contents, Config $config): void
{
$this->adapter->writeStream($path, $contents, $config);
}

public function read(string $path): string
{
return $this->adapter->read($path);
}

public function readStream(string $path)
{
return $this->adapter->readStream($path);
}

public function delete(string $path): void
{
$this->adapter->delete($path);
}

public function deleteDirectory(string $path): void
{
$this->adapter->deleteDirectory($path);
}

public function createDirectory(string $path, Config $config): void
{
$this->adapter->createDirectory($path, $config);
}

public function setVisibility(string $path, string $visibility): void
{
$this->adapter->setVisibility($path, $visibility);
}

public function visibility(string $path): FileAttributes
{
return $this->adapter->visibility($path);
}

public function mimeType(string $path): FileAttributes
{
return $this->adapter->mimeType($path);
}

public function lastModified(string $path): FileAttributes
{
return $this->adapter->lastModified($path);
}

public function fileSize(string $path): FileAttributes
{
return $this->adapter->fileSize($path);
}

public function listContents(string $path, bool $deep): iterable
{
return $this->adapter->listContents($path, $deep);
}

public function move(string $source, string $destination, Config $config): void
{
$this->adapter->move($source, $destination, $config);
}

public function copy(string $source, string $destination, Config $config): void
{
$this->adapter->copy($source, $destination, $config);
}
}
53 changes: 2 additions & 51 deletions src/ReadOnly/ReadOnlyFilesystemAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use League\Flysystem\CalculateChecksumFromStream;
use League\Flysystem\ChecksumProvider;
use League\Flysystem\Config;
use League\Flysystem\FileAttributes;
use League\Flysystem\DecoratedAdapter;
use League\Flysystem\FilesystemAdapter;
use League\Flysystem\UnableToCopyFile;
use League\Flysystem\UnableToCreateDirectory;
Expand All @@ -20,24 +20,10 @@
use League\Flysystem\UrlGeneration\PublicUrlGenerator;
use League\Flysystem\UrlGeneration\TemporaryUrlGenerator;

class ReadOnlyFilesystemAdapter implements FilesystemAdapter, PublicUrlGenerator, ChecksumProvider, TemporaryUrlGenerator
class ReadOnlyFilesystemAdapter extends DecoratedAdapter implements FilesystemAdapter, PublicUrlGenerator, ChecksumProvider, TemporaryUrlGenerator
{
use CalculateChecksumFromStream;

public function __construct(private FilesystemAdapter $adapter)
{
}

public function fileExists(string $path): bool
{
return $this->adapter->fileExists($path);
}

public function directoryExists(string $path): bool
{
return $this->adapter->directoryExists($path);
}

public function write(string $path, string $contents, Config $config): void
{
throw UnableToWriteFile::atLocation($path, 'This is a readonly adapter.');
Expand All @@ -48,16 +34,6 @@ public function writeStream(string $path, $contents, Config $config): void
throw UnableToWriteFile::atLocation($path, 'This is a readonly adapter.');
}

public function read(string $path): string
{
return $this->adapter->read($path);
}

public function readStream(string $path)
{
return $this->adapter->readStream($path);
}

public function delete(string $path): void
{
throw UnableToDeleteFile::atLocation($path, 'This is a readonly adapter.');
Expand All @@ -78,31 +54,6 @@ public function setVisibility(string $path, string $visibility): void
throw UnableToSetVisibility::atLocation($path, 'This is a readonly adapter.');
}

public function visibility(string $path): FileAttributes
{
return $this->adapter->visibility($path);
}

public function mimeType(string $path): FileAttributes
{
return $this->adapter->mimeType($path);
}

public function lastModified(string $path): FileAttributes
{
return $this->adapter->lastModified($path);
}

public function fileSize(string $path): FileAttributes
{
return $this->adapter->fileSize($path);
}

public function listContents(string $path, bool $deep): iterable
{
return $this->adapter->listContents($path, $deep);
}

public function move(string $source, string $destination, Config $config): void
{
throw new UnableToMoveFile("Unable to move file from $source to $destination as this is a readonly adapter.");
Expand Down

0 comments on commit 5ed8f6f

Please sign in to comment.