validateCommand($command); $request = new ConversionRequest( filePath: $command->filePath, originalFilename: $command->originalFilename, fileSize: $command->fileSize ); $result = $this->conversionService->convert($request); return ConversionResponse::fromConversionResult($result); } private function validateCommand(ConvertFileCommand $command): void { if (!file_exists($command->filePath)) { throw ConversionException::fileNotFound($command->filePath); } if ($command->fileSize > self::MAX_FILE_SIZE) { throw ConversionException::fileSizeExceedsLimit($command->fileSize, self::MAX_FILE_SIZE); } $extension = strtolower(pathinfo($command->originalFilename, PATHINFO_EXTENSION)); $allowedExtensions = ['cbr', 'cbz', 'zip', 'rar']; if (!in_array($extension, $allowedExtensions)) { throw ConversionException::invalidFileFormat($command->originalFilename); } } }