feat: pauses & resumes downloads

This commit is contained in:
2025-06-09 16:42:30 -05:00
parent a7bedae3db
commit 3c2092095f
12 changed files with 179 additions and 25 deletions

View File

@@ -4,9 +4,11 @@ namespace App\Download\Framework\Controller;
use App\Download\Action\Handler\DeleteDownloadHandler;
use App\Download\Action\Handler\PauseDownloadHandler;
use App\Download\Action\Handler\ResumeDownloadHandler;
use App\Download\Action\Input\DeleteDownloadInput;
use App\Download\Action\Input\DownloadMediaInput;
use App\Download\Action\Input\PauseDownloadInput;
use App\Download\Action\Input\ResumeDownloadInput;
use App\Download\Framework\Repository\DownloadRepository;
use App\Util\Broadcaster;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@@ -68,7 +70,7 @@ class ApiController extends AbstractController
return $this->json(['status' => 200, 'message' => 'Download Deleted']);
}
#[Route('/api/download/{downloadId}', name: 'api_download_pause', methods: ['PUT'])]
#[Route('/api/download/{downloadId}/pause', name: 'api_download_pause', methods: ['PATCH'])]
public function pauseDownload(
PauseDownloadInput $input,
PauseDownloadHandler $handler,
@@ -81,4 +83,18 @@ class ApiController extends AbstractController
return $this->json(['status' => 200, 'message' => 'Download Paused']);
}
#[Route('/api/download/{downloadId}/resume', name: 'api_download_resume', methods: ['PATCH'])]
public function resumeDownload(
ResumeDownloadInput $input,
ResumeDownloadHandler $handler,
): Response {
$result = $handler->handle($input->toCommand());
$this->broadcaster->alert(
title: 'Success',
message: "{$result->download->getTitle()} has been Resumed.",
);
return $this->json(['status' => 200, 'message' => 'Download Resumed']);
}
}