aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/maennchen/zipstream-php/src/LocalFileHeader.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/maennchen/zipstream-php/src/LocalFileHeader.php')
-rw-r--r--vendor/maennchen/zipstream-php/src/LocalFileHeader.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/vendor/maennchen/zipstream-php/src/LocalFileHeader.php b/vendor/maennchen/zipstream-php/src/LocalFileHeader.php
new file mode 100644
index 000000000..e08b65610
--- /dev/null
+++ b/vendor/maennchen/zipstream-php/src/LocalFileHeader.php
@@ -0,0 +1,40 @@
+<?php
+
+declare(strict_types=1);
+
+namespace ZipStream;
+
+use DateTimeInterface;
+
+/**
+ * @internal
+ */
+abstract class LocalFileHeader
+{
+ private const SIGNATURE = 0x04034b50;
+
+ public static function generate(
+ int $versionNeededToExtract,
+ int $generalPurposeBitFlag,
+ CompressionMethod $compressionMethod,
+ DateTimeInterface $lastModificationDateTime,
+ int $crc32UncompressedData,
+ int $compressedSize,
+ int $uncompressedSize,
+ string $fileName,
+ string $extraField,
+ ): string {
+ return PackField::pack(
+ new PackField(format: 'V', value: self::SIGNATURE),
+ new PackField(format: 'v', value: $versionNeededToExtract),
+ new PackField(format: 'v', value: $generalPurposeBitFlag),
+ new PackField(format: 'v', value: $compressionMethod->value),
+ new PackField(format: 'V', value: Time::dateTimeToDosTime($lastModificationDateTime)),
+ new PackField(format: 'V', value: $crc32UncompressedData),
+ new PackField(format: 'V', value: $compressedSize),
+ new PackField(format: 'V', value: $uncompressedSize),
+ new PackField(format: 'v', value: strlen($fileName)),
+ new PackField(format: 'v', value: strlen($extraField)),
+ ) . $fileName . $extraField;
+ }
+}