create filesystem abstraction
This commit is contained in:
parent
be2c51bfb7
commit
d59d444952
14 changed files with 44 additions and 64 deletions
|
|
@ -17,7 +17,7 @@ use App\Element\UseCases\UpdateElement\UpdateElement;
|
|||
use App\Element\UseCases\UpdateElement\UpdateElementRequest;
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
|
@ -32,7 +32,7 @@ class ElementController
|
|||
private ReorderChildElements $reorderChildElements,
|
||||
private UpdateElement $updateElement,
|
||||
private GetElementPdf $getElementPdf,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -400,7 +400,7 @@ class ElementController
|
|||
}
|
||||
|
||||
if (str_starts_with($path, $folderPrefix)) {
|
||||
return $this->fileUploader->url($path);
|
||||
return $this->filesystem->url($path);
|
||||
}
|
||||
|
||||
return $path;
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ use App\Element\Element;
|
|||
use App\Element\ElementRepository;
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class DeleteChildElement
|
||||
{
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -78,6 +78,6 @@ class DeleteChildElement
|
|||
return;
|
||||
}
|
||||
|
||||
$this->fileUploader->delete($path);
|
||||
$this->filesystem->delete($path);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
namespace App\Element\UseCases\GetElementPdf;
|
||||
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\StoredFileReader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class GetElementPdf
|
||||
{
|
||||
|
|
@ -11,7 +11,7 @@ class GetElementPdf
|
|||
|
||||
private const PDF_MIME_TYPE = 'application/pdf';
|
||||
|
||||
public function __construct(private StoredFileReader $storedFileReader)
|
||||
public function __construct(private Filesystem $filesystem)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ class GetElementPdf
|
|||
}
|
||||
|
||||
$path = "element-pdfs/$request->folder/$request->fileName";
|
||||
$contents = $this->storedFileReader->read($path);
|
||||
$contents = $this->filesystem->read($path);
|
||||
if ($contents === null) {
|
||||
throw new NotFoundException('PDF not found');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use App\Element\ElementRepository;
|
|||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileToUpload;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateIconImage
|
||||
{
|
||||
|
|
@ -21,7 +21,7 @@ class UpdateIconImage
|
|||
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -73,7 +73,7 @@ class UpdateIconImage
|
|||
mimeType: $request->fileMimeType,
|
||||
sizeBytes: $request->fileSizeBytes,
|
||||
);
|
||||
$path = $this->fileUploader->upload($iconImage, 'element-icons');
|
||||
$path = $this->filesystem->upload($iconImage, 'element-icons');
|
||||
$element->setIconImageUrl($path);
|
||||
|
||||
return $this->elementRepository->update($element);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ use App\Element\Element;
|
|||
use App\Element\ElementRepository;
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateIconImageUrl
|
||||
{
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +60,6 @@ class UpdateIconImageUrl
|
|||
return;
|
||||
}
|
||||
|
||||
$this->fileUploader->delete($path);
|
||||
$this->filesystem->delete($path);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use App\Element\ElementRepository;
|
|||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileToUpload;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateLongPdf
|
||||
{
|
||||
|
|
@ -19,7 +19,7 @@ class UpdateLongPdf
|
|||
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ class UpdateLongPdf
|
|||
mimeType: $request->fileMimeType,
|
||||
sizeBytes: $request->fileSizeBytes,
|
||||
);
|
||||
$path = $this->fileUploader->upload($pdf, 'element-pdfs/long');
|
||||
$path = $this->filesystem->upload($pdf, 'element-pdfs/long');
|
||||
$element->setLongPdfPath($path);
|
||||
|
||||
return $this->elementRepository->update($element);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ use App\Element\Element;
|
|||
use App\Element\ElementRepository;
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateLongPdfPath
|
||||
{
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +60,6 @@ class UpdateLongPdfPath
|
|||
return;
|
||||
}
|
||||
|
||||
$this->fileUploader->delete($path);
|
||||
$this->filesystem->delete($path);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use App\Element\ElementRepository;
|
|||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileToUpload;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateShortPdf
|
||||
{
|
||||
|
|
@ -19,7 +19,7 @@ class UpdateShortPdf
|
|||
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ class UpdateShortPdf
|
|||
mimeType: $request->fileMimeType,
|
||||
sizeBytes: $request->fileSizeBytes,
|
||||
);
|
||||
$path = $this->fileUploader->upload($pdf, 'element-pdfs/short');
|
||||
$path = $this->filesystem->upload($pdf, 'element-pdfs/short');
|
||||
$element->setShortPdfPath($path);
|
||||
|
||||
return $this->elementRepository->update($element);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ use App\Element\Element;
|
|||
use App\Element\ElementRepository;
|
||||
use App\Exceptions\BadRequestException;
|
||||
use App\Exceptions\NotFoundException;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
|
||||
class UpdateShortPdfPath
|
||||
{
|
||||
public function __construct(
|
||||
private ElementRepository $elementRepository,
|
||||
private FileUploader $fileUploader,
|
||||
private Filesystem $filesystem,
|
||||
) {
|
||||
}
|
||||
|
||||
|
|
@ -60,6 +60,6 @@ class UpdateShortPdfPath
|
|||
return;
|
||||
}
|
||||
|
||||
$this->fileUploader->delete($path);
|
||||
$this->filesystem->delete($path);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,10 +8,8 @@ use App\Auth\PasswordHasher;
|
|||
use App\Auth\RandomTokenGenerator;
|
||||
use App\Auth\SystemClock;
|
||||
use App\Auth\TokenGenerator;
|
||||
use App\Shared\Files\FileUploader;
|
||||
use App\Shared\Files\LaravelFileUploader;
|
||||
use App\Shared\Files\LaravelStoredFileReader;
|
||||
use App\Shared\Files\StoredFileReader;
|
||||
use App\Shared\Files\Filesystem;
|
||||
use App\Shared\Files\LaravelFilesystem;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
|
|
@ -31,12 +29,8 @@ class AppServiceProvider extends ServiceProvider
|
|||
SystemClock::class,
|
||||
);
|
||||
$this->app->bind(
|
||||
FileUploader::class,
|
||||
LaravelFileUploader::class,
|
||||
);
|
||||
$this->app->bind(
|
||||
StoredFileReader::class,
|
||||
LaravelStoredFileReader::class,
|
||||
Filesystem::class,
|
||||
LaravelFilesystem::class,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,13 @@
|
|||
|
||||
namespace App\Shared\Files;
|
||||
|
||||
interface FileUploader
|
||||
interface Filesystem
|
||||
{
|
||||
public function upload(FileToUpload $file, string $folder): string;
|
||||
|
||||
public function url(string $path): string;
|
||||
|
||||
public function delete(string $path): void;
|
||||
|
||||
public function read(string $path): ?string;
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ namespace App\Shared\Files;
|
|||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class LaravelFileUploader implements FileUploader
|
||||
class LaravelFilesystem implements Filesystem
|
||||
{
|
||||
public function upload(FileToUpload $file, string $folder): string
|
||||
{
|
||||
|
|
@ -25,6 +25,15 @@ class LaravelFileUploader implements FileUploader
|
|||
Storage::disk('public')->delete($path);
|
||||
}
|
||||
|
||||
public function read(string $path): ?string
|
||||
{
|
||||
if (!Storage::disk('public')->exists($path)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return Storage::disk('public')->get($path);
|
||||
}
|
||||
|
||||
private function extensionFor(FileToUpload $file): string
|
||||
{
|
||||
$mimeExtensions = [
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Shared\Files;
|
||||
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class LaravelStoredFileReader implements StoredFileReader
|
||||
{
|
||||
public function read(string $path): ?string
|
||||
{
|
||||
if (!Storage::disk('public')->exists($path)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return Storage::disk('public')->get($path);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Shared\Files;
|
||||
|
||||
interface StoredFileReader
|
||||
{
|
||||
public function read(string $path): ?string;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue