49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core\File\Adapters;
|
|
|
|
use Illuminate\Contracts\Filesystem\Filesystem;
|
|
use Illuminate\Http\UploadedFile;
|
|
use Modules\Core\File\Contracts\FileAdapterInterface;
|
|
use Symfony\Component\HttpFoundation\StreamedResponse;
|
|
|
|
/**
|
|
* Wraps Laravel's own 'local' Storage disk — see FileAdapterInterface's
|
|
* own docblock for why this exists as a named adapter rather than every
|
|
* caller reaching for Storage::disk('local') directly: swapping to a
|
|
* different backend later (S3FileAdapter, say) means adding one class and
|
|
* one contextual-binding entry, touching nothing that already uses
|
|
* FileService.
|
|
*/
|
|
class LocalFileAdapter implements FileAdapterInterface
|
|
{
|
|
public function __construct(
|
|
private readonly Filesystem $disk,
|
|
) {}
|
|
|
|
public function store(UploadedFile $file, string $directory): string
|
|
{
|
|
return $this->disk->putFile($directory, $file);
|
|
}
|
|
|
|
public function exists(string $path): bool
|
|
{
|
|
return $this->disk->exists($path);
|
|
}
|
|
|
|
public function delete(string $path): void
|
|
{
|
|
$this->disk->delete($path);
|
|
}
|
|
|
|
public function retrieve(string $path, ?string $name = null): StreamedResponse
|
|
{
|
|
return $this->disk->response($path, $name);
|
|
}
|
|
|
|
public function download(string $path, ?string $name = null): StreamedResponse
|
|
{
|
|
return $this->disk->download($path, $name);
|
|
}
|
|
}
|