file chunks refactoring

This commit is contained in:
Čarodej
2022-04-19 09:40:31 +02:00
parent 6c3e7801da
commit 19e29e69e0
19 changed files with 240 additions and 204 deletions

View File

@@ -1,45 +1,43 @@
<?php
namespace Domain\Files\Controllers;
use Domain\Files\Models\File;
use App\Http\Controllers\Controller;
use Domain\Files\Requests\UploadRequest;
use Domain\Files\Resources\FileResource;
use Domain\Files\Actions\UploadFileAction;
use Domain\Files\Actions\ProcessFileAction;
use Support\Demo\Actions\FakeUploadFileAction;
use App\Users\Exceptions\InvalidUserActionException;
use Domain\Files\Actions\StoreFileChunksAction;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
class UploadFileController extends Controller
{
public function __construct(
public UploadFileAction $uploadFiles,
public FakeUploadFileAction $fakeUploadFile,
public ProcessFileAction $processFie,
public FakeUploadFileAction $fakeUploadFile,
public StoreFileChunksAction $storeFileChunks,
) {
}
/**
* Upload file for authenticated master|editor user
*
* @throws FileNotFoundException
*/
public function __invoke(UploadRequest $request)
{
public function __invoke(UploadRequest $request) {
if (is_demo_account()) {
return ($this->fakeUploadFile)($request);
}
try {
// Upload and store file record
if (! $request->boolean('is_last')) {
return ($this->uploadFiles)($request);
}
// Store file chunks
$chunkPath = ($this->storeFileChunks)($request);
$file = ($this->uploadFiles)($request);
// Proceed after last chunk
if ($request->boolean('is_last')) {
// Process file
$file = ($this->processFie)($request, null, $chunkPath);
return response(new FileResource($file), 201);
} catch (InvalidUserActionException $e) {
return response([
'type' => 'error',
'message' => $e->getMessage(),
], 401);
}
}
}