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_ENV=local
APP_KEY=base64:k5FduZ4Vu5ONvcJysN6xZYlix606oNocewyXSyOEspQ=
APP_KEY=base64:/yb14wOXR+PqqMWnzqE2YZxcvqwSYYKDHtrF0BpT5fM=
APP_DEBUG=true
APP_URL=http://localhost
APP_DEMO=false

View File

@@ -11,7 +11,7 @@ const actions = {
commit('SET_RUNNING_COMMUNICATION')
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)
// 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\Browsing\Controllers\BrowseFolderController;
use Domain\Sharing\Controllers\ShareViaEmailController;
use Domain\Files\Controllers\RemoteUploadFileController;
use Domain\Folders\Controllers\NavigationTreeController;
use Domain\Items\Controllers\MoveFileOrFolderController;
use App\Socialite\Controllers\SocialiteRedirectController;
@@ -25,6 +24,7 @@ use Domain\Browsing\Controllers\BrowseLatestFilesController;
use Domain\Browsing\Controllers\BrowseSharedItemsController;
use Domain\Browsing\Controllers\BrowseTrashContentController;
use Domain\Homepage\Controllers\SendContactMessageController;
use Domain\RemoteUpload\Controllers\RemoteUploadFileController;
use Domain\Sharing\Controllers\GetShareLinkViaQrCodeController;
use App\Users\Controllers\Authentication\RegisterUserController;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,15 +1,13 @@
<?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\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;
@@ -20,14 +18,15 @@ class NewFileWasStoredEvent implements ShouldBroadcastNow
*/
public function __construct(
public array $payload,
) {}
) {
}
/**
* The event's broadcast name.
*/
public function broadcastAs(): string
{
return 'file.created';
return 'RemoteFile.Created';
}
/**

View File

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

View File

@@ -11,7 +11,7 @@ use Domain\Folders\Models\Folder;
use Illuminate\Http\UploadedFile;
use Domain\Settings\Models\Setting;
use Illuminate\Support\Facades\Http;
use Domain\Files\Events\NewFileWasStoredEvent;
use Domain\RemoteUpload\Events\RemoteFileCreatedEvent;
class FileTest extends TestCase
{
@@ -111,7 +111,7 @@ class FileTest extends TestCase
public function it_remotely_upload_new_file()
{
Event::fake([
NewFileWasStoredEvent::class,
RemoteFileCreatedEvent::class,
]);
$user = User::factory()
@@ -153,7 +153,7 @@ class FileTest extends TestCase
File::all()
->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");
});