fix(manga): générer le CBZ de téléchargement depuis les dossiers de pages
Les endpoints de téléchargement chapitre/volume plantaient (500 "file does not exist") car le FileService traitait `pagesDirectory` comme un CBZ. Le service reconstruit maintenant l'archive à la volée à partir des images du dossier, et le nom du fichier chapitre inclut le titre du manga et le numéro. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -9,6 +9,7 @@ use App\Domain\Manga\Domain\Contract\Service\FileServiceInterface;
|
||||
use App\Domain\Manga\Domain\Exception\CbzFileNotFoundException;
|
||||
use App\Domain\Manga\Domain\Exception\ChapterNotAvailableException;
|
||||
use App\Domain\Manga\Domain\Exception\ChapterNotFoundException;
|
||||
use App\Domain\Manga\Domain\Exception\MangaNotFoundException;
|
||||
use App\Domain\Shared\Domain\Contract\QueryHandlerInterface;
|
||||
use App\Domain\Shared\Domain\Contract\QueryInterface;
|
||||
use App\Domain\Shared\Domain\Contract\ResponseInterface;
|
||||
@@ -35,8 +36,19 @@ readonly class DownloadCbzHandler implements QueryHandlerInterface
|
||||
throw new ChapterNotAvailableException($query->chapterId);
|
||||
}
|
||||
|
||||
$manga = $this->mangaRepository->findById($chapter->getMangaId()->getValue());
|
||||
if (!$manga) {
|
||||
throw new MangaNotFoundException($chapter->getMangaId()->getValue());
|
||||
}
|
||||
|
||||
$pagesDirectory = $chapter->getPagesDirectory();
|
||||
$filename = basename($pagesDirectory);
|
||||
|
||||
$number = $chapter->getNumber();
|
||||
$formattedNumber = fmod($number, 1.0) === 0.0
|
||||
? sprintf('%03d', (int) $number)
|
||||
: rtrim(rtrim(sprintf('%06.2f', $number), '0'), '.');
|
||||
|
||||
$filename = sprintf('%s - Ch.%s', $manga->getTitle()->getValue(), $formattedNumber);
|
||||
|
||||
try {
|
||||
$httpResponse = $this->fileService->downloadCbz($pagesDirectory, $filename);
|
||||
|
||||
Reference in New Issue
Block a user