![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/app/code/Amasty/Base/Model/Response/ |
<?php declare(strict_types=1); /** * @author Amasty Team * @copyright Copyright (c) Amasty (https://www.amasty.com) * @package Magento 2 Base Package */ namespace Amasty\Base\Model\Response; use Magento\Framework\Filesystem\Io; class OctetResponseInterfaceFactory { /** * @var Io\File */ private $ioFile; /** * @var array */ private $responseFactoryAssociationMap; public function __construct( Io\File $ioFile, array $responseFactoryAssociationMap = [] ) { $this->ioFile = $ioFile; $this->responseFactoryAssociationMap = $responseFactoryAssociationMap; } public function create( string $resourcePath, string $resourceType = OctetResponseInterface::FILE, string $fileName = null ): OctetResponseInterface { if (!isset($this->responseFactoryAssociationMap[$resourceType])) { throw new \InvalidArgumentException('There is no resource handler for type ' . $resourceType); } $concreteOctetResponse = $this->responseFactoryAssociationMap[$resourceType]->create(); if (!$concreteOctetResponse instanceof OctetResponseInterface) { throw new \LogicException( sprintf( 'OctetResponse class %s must implement %s interface', get_class($concreteOctetResponse), OctetResponseInterface::class ) ); } $readResource = $concreteOctetResponse->getReadResourceByPath($resourcePath); $concreteOctetResponse->setReadResource($readResource); $fileName = $fileName ?? $this->getFileNameFromResourcePath($resourcePath); $concreteOctetResponse->setFileName($fileName); return $concreteOctetResponse; } private function getFileNameFromResourcePath(string $resourcePath): string { $resourcePathInfo = $this->ioFile->getPathInfo($resourcePath); return $resourcePathInfo['basename'] ?? 'file'; } }