remote upload refactoring

This commit is contained in:
Čarodej
2022-04-25 10:56:15 +02:00
parent 954f0e3361
commit b635a17644
14 changed files with 41 additions and 39 deletions

View File

@@ -1,6 +1,6 @@
APP_NAME=Laravel APP_NAME=Laravel
APP_ENV=local APP_ENV=local
APP_KEY=base64:k5FduZ4Vu5ONvcJysN6xZYlix606oNocewyXSyOEspQ= APP_KEY=base64:/yb14wOXR+PqqMWnzqE2YZxcvqwSYYKDHtrF0BpT5fM=
APP_DEBUG=true APP_DEBUG=true
APP_URL=http://localhost APP_URL=http://localhost
APP_DEMO=false APP_DEMO=false

View File

@@ -11,7 +11,7 @@ const actions = {
commit('SET_RUNNING_COMMUNICATION') commit('SET_RUNNING_COMMUNICATION')
Echo.private(`App.Users.Models.User.${getters.user.data.id}`) Echo.private(`App.Users.Models.User.${getters.user.data.id}`)
.listen('.file.created', (event) => { .listen('.RemoteFile.Created', (event) => {
commit('UPDATE_REMOTE_UPLOAD_QUEUE', event.payload) commit('UPDATE_REMOTE_UPLOAD_QUEUE', event.payload)
// If user is located in same directory as remote upload was called, then show the files // If user is located in same directory as remote upload was called, then show the files

View File

@@ -12,7 +12,6 @@ use Domain\SetupWizard\Controllers\PingAPIController;
use Domain\Folders\Controllers\CreateFolderController; use Domain\Folders\Controllers\CreateFolderController;
use Domain\Browsing\Controllers\BrowseFolderController; use Domain\Browsing\Controllers\BrowseFolderController;
use Domain\Sharing\Controllers\ShareViaEmailController; use Domain\Sharing\Controllers\ShareViaEmailController;
use Domain\Files\Controllers\RemoteUploadFileController;
use Domain\Folders\Controllers\NavigationTreeController; use Domain\Folders\Controllers\NavigationTreeController;
use Domain\Items\Controllers\MoveFileOrFolderController; use Domain\Items\Controllers\MoveFileOrFolderController;
use App\Socialite\Controllers\SocialiteRedirectController; use App\Socialite\Controllers\SocialiteRedirectController;
@@ -25,6 +24,7 @@ use Domain\Browsing\Controllers\BrowseLatestFilesController;
use Domain\Browsing\Controllers\BrowseSharedItemsController; use Domain\Browsing\Controllers\BrowseSharedItemsController;
use Domain\Browsing\Controllers\BrowseTrashContentController; use Domain\Browsing\Controllers\BrowseTrashContentController;
use Domain\Homepage\Controllers\SendContactMessageController; use Domain\Homepage\Controllers\SendContactMessageController;
use Domain\RemoteUpload\Controllers\RemoteUploadFileController;
use Domain\Sharing\Controllers\GetShareLinkViaQrCodeController; use Domain\Sharing\Controllers\GetShareLinkViaQrCodeController;
use App\Users\Controllers\Authentication\RegisterUserController; use App\Users\Controllers\Authentication\RegisterUserController;

View File

@@ -7,12 +7,12 @@ use Domain\Files\Controllers\VisitorUploadFileController;
use Domain\Folders\Controllers\VisitorCreateFolderController; use Domain\Folders\Controllers\VisitorCreateFolderController;
use Domain\Sharing\Controllers\WebCrawlerOpenGraphController; use Domain\Sharing\Controllers\WebCrawlerOpenGraphController;
use Domain\Browsing\Controllers\VisitorBrowseFolderController; use Domain\Browsing\Controllers\VisitorBrowseFolderController;
use Domain\Files\Controllers\VisitorRemoteUploadFileController;
use Domain\Items\Controllers\VisitorMoveFileOrFolderController; use Domain\Items\Controllers\VisitorMoveFileOrFolderController;
use Domain\Items\Controllers\VisitorDeleteFileOrFolderController; use Domain\Items\Controllers\VisitorDeleteFileOrFolderController;
use Domain\Items\Controllers\VisitorRenameFileOrFolderController; use Domain\Items\Controllers\VisitorRenameFileOrFolderController;
use Domain\Sharing\Controllers\VisitorUnlockLockedShareController; use Domain\Sharing\Controllers\VisitorUnlockLockedShareController;
use Domain\Folders\Controllers\VisitorNavigationFolderTreeController; use Domain\Folders\Controllers\VisitorNavigationFolderTreeController;
use Domain\RemoteUpload\Controllers\VisitorRemoteUploadFileController;
use Domain\Browsing\Controllers\VisitorSearchFilesAndFoldersController; use Domain\Browsing\Controllers\VisitorSearchFilesAndFoldersController;
// Browse functions // Browse functions

View File

@@ -10,7 +10,7 @@ use Domain\UploadRequest\Controllers\MoveItemInUploadRequestController;
use Domain\UploadRequest\Controllers\SetUploadRequestAsFilledController; use Domain\UploadRequest\Controllers\SetUploadRequestAsFilledController;
use Domain\UploadRequest\Controllers\UploadFilesForUploadRequestController; use Domain\UploadRequest\Controllers\UploadFilesForUploadRequestController;
use Domain\UploadRequest\Controllers\GetFolderTreeForUploadRequestController; use Domain\UploadRequest\Controllers\GetFolderTreeForUploadRequestController;
use Domain\UploadRequest\Controllers\UploadFilesRemotelyForUploadRequestController; use Domain\RemoteUpload\Controllers\UploadFilesRemotelyForUploadRequestController;
Route::get('/{uploadRequest}', GetUploadRequestController::class); Route::get('/{uploadRequest}', GetUploadRequestController::class);

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace App\Console\Commands; namespace App\Console\Commands;
use Illuminate\Console\Command; use Illuminate\Console\Command;

View File

@@ -1,13 +1,13 @@
<?php <?php
namespace App\Console; namespace App\Console;
use App\Console\Commands\SetupWebsocketEnvironment;
use Illuminate\Console\Scheduling\Schedule; use Illuminate\Console\Scheduling\Schedule;
use App\Console\Commands\SetupDevEnvironment; use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupProdEnvironment; use App\Console\Commands\SetupProdEnvironment;
use Support\Scheduler\Actions\ReportUsageAction; use Support\Scheduler\Actions\ReportUsageAction;
use Support\Upgrading\Actions\UpdateSystemAction; use Support\Upgrading\Actions\UpdateSystemAction;
use Support\Demo\Actions\ClearHowdyDemoDataAction; use Support\Demo\Actions\ClearHowdyDemoDataAction;
use App\Console\Commands\SetupWebsocketEnvironment;
use Support\Scheduler\Actions\DeleteFailedFilesAction; use Support\Scheduler\Actions\DeleteFailedFilesAction;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction;

View File

@@ -1,9 +1,6 @@
<?php <?php
namespace Domain\RemoteUpload\Actions;
namespace Domain\Files\Actions;
use Domain\Files\Events\NewFileWasStoredEvent;
use Domain\Files\Resources\FileResource;
use Log; use Log;
use Error; use Error;
use ErrorException; use ErrorException;
@@ -12,23 +9,31 @@ use Illuminate\Support\Str;
use Domain\Files\Models\File; use Domain\Files\Models\File;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Domain\Files\Resources\FileResource;
use Domain\Files\Actions\ProcessFileAction;
use Spatie\QueueableAction\QueueableAction; use Spatie\QueueableAction\QueueableAction;
use Domain\Files\Actions\MoveFileToFTPStorageAction;
use Domain\Files\Actions\ProcessImageThumbnailAction;
use Domain\Files\Actions\StoreFileExifMetadataAction;
use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
use Domain\Files\Actions\MoveFileToExternalStorageAction;
class GetContentFromExternalSource class GetContentFromExternalSource
{ {
use QueueableAction; use QueueableAction;
public function __construct( public function __construct(
public ProcessFileAction $processFile, public ProcessFileAction $processFile,
public StoreFileExifMetadataAction $storeExifMetadata, public StoreFileExifMetadataAction $storeExifMetadata,
public MoveFileToFTPStorageAction $moveFileToFTPStorage, public MoveFileToFTPStorageAction $moveFileToFTPStorage,
public ProcessImageThumbnailAction $createImageThumbnail, public ProcessImageThumbnailAction $createImageThumbnail,
public MoveFileToExternalStorageAction $moveFileToExternalStorage, public MoveFileToExternalStorageAction $moveFileToExternalStorage,
) {} ) {
}
public function __invoke( public function __invoke(
array $payload, array $payload,
User $user, User $user,
) { ) {
$total = count($payload['urls']); $total = count($payload['urls']);
$processed = 0; $processed = 0;
@@ -91,7 +96,7 @@ class GetContentFromExternalSource
$processed++; $processed++;
// Broadcast new file into the frontend // Broadcast new file into the frontend
NewFileWasStoredEvent::dispatch([ RemoteFileCreatedEvent::dispatch([
'progress' => [ 'progress' => [
'total' => $total, 'total' => $total,
'processed' => $processed, 'processed' => $processed,
@@ -105,7 +110,7 @@ class GetContentFromExternalSource
$failed++; $failed++;
// Broadcast new file into the frontend // Broadcast new file into the frontend
NewFileWasStoredEvent::dispatch([ RemoteFileCreatedEvent::dispatch([
'progress' => [ 'progress' => [
'total' => $total, 'total' => $total,
'processed' => $processed, 'processed' => $processed,

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace Domain\Files\Controllers; namespace Domain\RemoteUpload\Controllers;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Domain\Files\Requests\RemoteUploadRequest; use Domain\Files\Requests\RemoteUploadRequest;
use Domain\Files\Actions\GetContentFromExternalSource; use Domain\RemoteUpload\Actions\GetContentFromExternalSource;
class RemoteUploadFileController extends Controller class RemoteUploadFileController extends Controller
{ {

View File

@@ -1,12 +1,12 @@
<?php <?php
namespace Domain\UploadRequest\Controllers; namespace Domain\RemoteUpload\Controllers;
use DB; use DB;
use Domain\Folders\Models\Folder; use Domain\Folders\Models\Folder;
use Domain\Files\Requests\RemoteUploadRequest; use Domain\Files\Requests\RemoteUploadRequest;
use Domain\UploadRequest\Models\UploadRequest; use Domain\UploadRequest\Models\UploadRequest;
use Domain\Files\Actions\GetContentFromExternalSource;
use Illuminate\Contracts\Filesystem\FileNotFoundException; use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Domain\RemoteUpload\Actions\GetContentFromExternalSource;
class UploadFilesRemotelyForUploadRequestController class UploadFilesRemotelyForUploadRequestController
{ {

View File

@@ -1,5 +1,5 @@
<?php <?php
namespace Domain\Files\Controllers; namespace Domain\RemoteUpload\Controllers;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Domain\Sharing\Models\Share; use Domain\Sharing\Models\Share;
@@ -7,7 +7,7 @@ use App\Http\Controllers\Controller;
use Domain\Files\Requests\RemoteUploadRequest; use Domain\Files\Requests\RemoteUploadRequest;
use Domain\Sharing\Actions\ProtectShareRecordAction; use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction; use Domain\Sharing\Actions\VerifyAccessToItemAction;
use Domain\Files\Actions\GetContentFromExternalSource; use Domain\RemoteUpload\Actions\GetContentFromExternalSource;
class VisitorRemoteUploadFileController extends Controller class VisitorRemoteUploadFileController extends Controller
{ {

View File

@@ -1,15 +1,13 @@
<?php <?php
namespace Domain\RemoteUpload\Events;
namespace Domain\Files\Events;
use Domain\Files\Resources\FileResource;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
class NewFileWasStoredEvent implements ShouldBroadcastNow class RemoteFileCreatedEvent implements ShouldBroadcastNow
{ {
use Dispatchable, InteractsWithSockets, SerializesModels; use Dispatchable, InteractsWithSockets, SerializesModels;
@@ -20,14 +18,15 @@ class NewFileWasStoredEvent implements ShouldBroadcastNow
*/ */
public function __construct( public function __construct(
public array $payload, public array $payload,
) {} ) {
}
/** /**
* The event's broadcast name. * The event's broadcast name.
*/ */
public function broadcastAs(): string public function broadcastAs(): string
{ {
return 'file.created'; return 'RemoteFile.Created';
} }
/** /**

View File

@@ -1,5 +1,4 @@
<?php <?php
namespace Domain\Settings\Actions; namespace Domain\Settings\Actions;
use Storage; use Storage;

View File

@@ -11,7 +11,7 @@ use Domain\Folders\Models\Folder;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Domain\Settings\Models\Setting; use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Domain\Files\Events\NewFileWasStoredEvent; use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
class FileTest extends TestCase class FileTest extends TestCase
{ {
@@ -111,7 +111,7 @@ class FileTest extends TestCase
public function it_remotely_upload_new_file() public function it_remotely_upload_new_file()
{ {
Event::fake([ Event::fake([
NewFileWasStoredEvent::class, RemoteFileCreatedEvent::class,
]); ]);
$user = User::factory() $user = User::factory()
@@ -153,7 +153,7 @@ class FileTest extends TestCase
File::all() File::all()
->each(function ($file) { ->each(function ($file) {
Event::assertDispatched(fn(NewFileWasStoredEvent $event) => $event->payload['file']->id === $file->id); Event::assertDispatched(fn (RemoteFileCreatedEvent $event) => $event->payload['file']->id === $file->id);
Storage::assertExists("files/$file->user_id/$file->basename"); Storage::assertExists("files/$file->user_id/$file->basename");
}); });