<?php
/**
*
* @package Duplicator
* @copyright (c) 2021, Snapcreek LLC
*/
namespace Duplicator\Libs\DupArchive\Headers;
use Exception;
/**
* Dup archive read header
*
* Format: #A#{version:5}#{isCompressed}!
*/
class DupArchiveReaderHeader
{
/** @var string */
protected $version;
/** @var bool */
public $isCompressed;
/**
* Class Contructor
*/
protected function __construct()
{
// Prevent instantiation
}
/**
* Get header from archive
*
* @param resource $archiveHandle archive resource
*
* @return static
*/
public static function readFromArchive($archiveHandle)
{
$instance = new static();
$startElement = fgets($archiveHandle, 4);
if ($startElement != '<A>') {
throw new Exception("Invalid archive header marker found {$startElement}");
}
$instance->version = DupArchiveHeaderU::readStandardHeaderField($archiveHandle, 'V');
$instance->isCompressed = filter_var(DupArchiveHeaderU::readStandardHeaderField($archiveHandle, 'C'), FILTER_VALIDATE_BOOLEAN);
// Skip the </A>
fgets($archiveHandle, 5);
return $instance;
}
}
|