* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter\Attachment\QueryHandler; use PrestaShop\PrestaShop\Adapter\Attachment\AbstractAttachmentHandler; use PrestaShop\PrestaShop\Core\Domain\Attachment\Exception\AttachmentNotFoundException; use PrestaShop\PrestaShop\Core\Domain\Attachment\Query\GetAttachment; use PrestaShop\PrestaShop\Core\Domain\Attachment\QueryHandler\GetAttachmentHandlerInterface; use PrestaShop\PrestaShop\Core\Domain\Attachment\QueryResult\Attachment; /** * Provides path and original file name of attachment */ final class GetAttachmentHandler extends AbstractAttachmentHandler implements GetAttachmentHandlerInterface { /** * @var string */ private $downloadDirectory; /** * @param string $downloadDirectory */ public function __construct(string $downloadDirectory) { $this->downloadDirectory = $downloadDirectory; } /** * {@inheritdoc} * * @throws AttachmentNotFoundException */ public function handle(GetAttachment $query): Attachment { $attachment = $this->getAttachment($query->getAttachmentId()); $path = $this->downloadDirectory . $attachment->file; if (!file_exists($path)) { throw new AttachmentNotFoundException(sprintf('Attachment file was not found at %s', $path)); } return new Attachment( $path, $attachment->file_name ); } }