/** * Retrieve Resource file handle (socket, file pointer etc) * * @return \Magento\Framework\Filesystem\File\ReadInterface * @throws CoreException|\Exception */ protected function _getHandle() { if (!$this->_resourceFile) { throw new CoreException(__('Please set resource file and link type.')); } if (is_null($this->_handle)) { if ($this->_linkType == self::LINK_TYPE_URL) { $this->_handle = $this->_filesystem->getRemoteResource($this->_resourceFile); } elseif ($this->_linkType == self::LINK_TYPE_FILE) { $this->_workingDirectory = $this->_filesystem->getDirectoryRead(Filesystem::MEDIA_DIR); $fileExists = $this->_downloadableFile->ensureFileInFilesystem($this->_resourceFile); if ($fileExists) { $this->_handle = $this->_workingDirectory->openFile($this->_resourceFile); } else { throw new CoreException(__('Invalid download link type.')); } } else { throw new CoreException(__('Invalid download link type.')); } } return $this->_handle; }