diff --git a/src/ncc/Classes/PackageReader.php b/src/ncc/Classes/PackageReader.php index 4123a1a..26ef095 100644 --- a/src/ncc/Classes/PackageReader.php +++ b/src/ncc/Classes/PackageReader.php @@ -168,7 +168,7 @@ throw new IOException(sprintf('File \'%s\' is not a valid package file (corrupted header)', $file_path), $e); } - if(!isset($this->headers[PackageStructure::FILE_VERSION])) + if(!isset($this->headers[PackageStructure::FILE_VERSION->value])) { throw new IOException(sprintf('File \'%s\' is not a valid package file (invalid header)', $file_path)); } @@ -213,7 +213,7 @@ */ public function getFileVersion(): string { - return $this->headers[PackageStructure::FILE_VERSION]; + return $this->headers[PackageStructure::FILE_VERSION->value]; } /** @@ -223,7 +223,7 @@ */ public function getFlags(): array { - return $this->headers[PackageStructure::FLAGS]; + return $this->headers[PackageStructure::FLAGS->value]; } /** @@ -234,7 +234,7 @@ */ public function getFlag(string $name): bool { - return in_array($name, $this->headers[PackageStructure::FLAGS], true); + return in_array($name, $this->headers[PackageStructure::FLAGS->value], true); } /** @@ -244,7 +244,7 @@ */ public function getDirectory(): array { - return $this->headers[PackageStructure::DIRECTORY]; + return $this->headers[PackageStructure::DIRECTORY->value]; } /** @@ -255,15 +255,15 @@ */ public function get(string $name): string { - if(!isset($this->headers[PackageStructure::DIRECTORY][$name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value][$name])) { throw new RuntimeException(sprintf('File \'%s\' not found in package', $name)); } - $location = explode(':', $this->headers[PackageStructure::DIRECTORY][$name]); + $location = explode(':', $this->headers[PackageStructure::DIRECTORY->value][$name]); fseek($this->package_file, ($this->data_offset + (int)$location[0])); - if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS], true)) + if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true)) { return gzuncompress(fread($this->package_file, (int)$location[1])); } @@ -279,12 +279,12 @@ */ public function getPointer(string $name): array { - if(!isset($this->headers[PackageStructure::DIRECTORY][$name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$name]])) { throw new RuntimeException(sprintf('Resource \'%s\' not found in package', $name)); } - $location = explode(':', $this->headers[PackageStructure::DIRECTORY][$name]); + $location = explode(':', $this->headers[PackageStructure::DIRECTORY->value[$name]]); return [(int)$location[0], (int)$location[1]]; } @@ -296,7 +296,7 @@ */ public function exists(string $name): bool { - return isset($this->headers[PackageStructure::DIRECTORY][$name]); + return isset($this->headers[PackageStructure::DIRECTORY->value[$name]]); } /** @@ -327,7 +327,7 @@ return $this->cache[$directory]; } - if(!isset($this->headers[PackageStructure::DIRECTORY][$directory])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]])) { throw new ConfigurationException('Package does not contain an assembly'); } @@ -353,7 +353,7 @@ return $this->cache[$directory]; } - if(!isset($this->headers[PackageStructure::DIRECTORY][$directory])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]])) { throw new ConfigurationException('Package does not contain metadata'); } @@ -382,7 +382,7 @@ return $this->cache[$directory]; } - if(!isset($this->headers[PackageStructure::DIRECTORY][$directory])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$directory]])) { return null; } @@ -402,7 +402,7 @@ $dependencies = []; $directory = sprintf('@%s:', PackageDirectory::DEPENDENCIES); - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_starts_with($name, $directory)) { @@ -423,7 +423,7 @@ public function getDependency(string $name): Dependency { $dependency_name = sprintf('@%s:%s', PackageDirectory::DEPENDENCIES, $name); - if(!isset($this->headers[PackageStructure::DIRECTORY][$dependency_name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$dependency_name]])) { throw new ConfigurationException(sprintf('Dependency \'%s\' not found in package', $name)); } @@ -454,7 +454,7 @@ $execution_units = []; $directory = sprintf('@%s:', PackageDirectory::EXECUTION_UNITS); - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_starts_with($name, $directory)) { @@ -475,7 +475,7 @@ public function getExecutionUnit(string $name): ExecutionUnit { $execution_unit_name = sprintf('@%s:%s', PackageDirectory::EXECUTION_UNITS, $name); - if(!isset($this->headers[PackageStructure::DIRECTORY][$execution_unit_name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$execution_unit_name]])) { throw new ConfigurationException(sprintf('Execution unit \'%s\' not found in package', $name)); } @@ -506,7 +506,7 @@ $components = []; $directory = sprintf('@%s:', PackageDirectory::COMPONENTS); - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_starts_with($name, $directory)) { @@ -527,7 +527,7 @@ $class_map = []; $directory = sprintf('@%s:', PackageDirectory::CLASS_POINTER); - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_starts_with($name, $directory)) { @@ -548,7 +548,7 @@ public function getComponent(string $name): Component { $component_name = sprintf('@%s:%s', PackageDirectory::COMPONENTS, $name); - if(!isset($this->headers[PackageStructure::DIRECTORY][$component_name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value][$component_name])) { throw new ConfigurationException(sprintf('Component \'%s\' not found in package', $name)); } @@ -579,7 +579,7 @@ public function getComponentByClass(string $class): Component { $class_name = sprintf('@%s:%s', PackageDirectory::CLASS_POINTER, $class); - if(!isset($this->headers[PackageStructure::DIRECTORY][$class_name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$class_name]])) { throw new ConfigurationException(sprintf('Class map \'%s\' not found in package', $class)); } @@ -597,7 +597,7 @@ $resources = []; $directory = sprintf('@%s:', PackageDirectory::RESOURCES); - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_starts_with($name, $directory)) { @@ -618,7 +618,7 @@ public function getResource(string $name): Resource { $resource_name = sprintf('@%s:%s', PackageDirectory::RESOURCES, $name); - if(!isset($this->headers[PackageStructure::DIRECTORY][$resource_name])) + if(!isset($this->headers[PackageStructure::DIRECTORY->value[$resource_name]])) { throw new ConfigurationException(sprintf('Resource \'%s\' not found in package', $name)); } @@ -647,7 +647,7 @@ */ public function find(string $filename): string|false { - foreach($this->headers[PackageStructure::DIRECTORY] as $name => $location) + foreach($this->headers[PackageStructure::DIRECTORY->value] as $name => $location) { if(str_ends_with($name, $filename)) { diff --git a/src/ncc/Classes/PackageWriter.php b/src/ncc/Classes/PackageWriter.php index ad8d6ee..440bd38 100644 --- a/src/ncc/Classes/PackageWriter.php +++ b/src/ncc/Classes/PackageWriter.php @@ -108,9 +108,9 @@ $this->temp_file = @fopen($this->temporary_path, 'wb'); // Create a temporary data file $this->package_file = @fopen($file_path, 'wb'); $this->headers = [ - PackageStructure::FILE_VERSION => PackageStructureVersions::_2_0->value, - PackageStructure::FLAGS => [], - PackageStructure::DIRECTORY => [] + PackageStructure::FILE_VERSION->value => PackageStructureVersions::_2_0->value, + PackageStructure::FLAGS->value => [], + PackageStructure::DIRECTORY->value => [] ]; if($this->temp_file === false || $this->package_file === false) @@ -126,7 +126,7 @@ */ public function getFileVersion(): string { - return (string)$this->headers[PackageStructure::FILE_VERSION]; + return (string)$this->headers[PackageStructure::FILE_VERSION->value]; } /** @@ -137,7 +137,7 @@ */ public function setFileVersion(string $version): void { - $this->headers[PackageStructure::FILE_VERSION] = $version; + $this->headers[PackageStructure::FILE_VERSION->value] = $version; } /** @@ -147,7 +147,7 @@ */ public function getFlags(): array { - return (array)$this->headers[PackageStructure::FLAGS]; + return (array)$this->headers[PackageStructure::FLAGS->value]; } /** @@ -164,7 +164,7 @@ throw new IOException('Cannot set flags after data has been written to the package'); } - $this->headers[PackageStructure::FLAGS] = $flags; + $this->headers[PackageStructure::FLAGS->value] = $flags; } /** @@ -181,9 +181,9 @@ throw new IOException('Cannot add a flag after data has been written to the package'); } - if(!in_array($flag, $this->headers[PackageStructure::FLAGS], true)) + if(!in_array($flag, $this->headers[PackageStructure::FLAGS->value], true)) { - $this->headers[PackageStructure::FLAGS][] = $flag; + $this->headers[PackageStructure::FLAGS->value][] = $flag; } } @@ -201,7 +201,7 @@ throw new IOException('Cannot remove a flag after data has been written to the package'); } - $this->headers[PackageStructure::FLAGS] = array_diff($this->headers[PackageStructure::FLAGS], [$flag]); + $this->headers[PackageStructure::FLAGS->value] = array_diff($this->headers[PackageStructure::FLAGS->value], [$flag]); } /** @@ -213,22 +213,22 @@ */ public function add(string $name, string $data): array { - if(isset($this->headers[PackageStructure::DIRECTORY][$name])) + if(isset($this->headers[PackageStructure::DIRECTORY->value][$name])) { - return explode(':', $this->headers[PackageStructure::DIRECTORY][$name]); + return explode(':', $this->headers[PackageStructure::DIRECTORY->value][$name]); } - if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS], true)) + if(in_array(PackageFlags::COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true)) { - if(in_array(PackageFlags::LOW_COMPRESSION, $this->headers[PackageStructure::FLAGS], true)) + if(in_array(PackageFlags::LOW_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true)) { $data = gzcompress($data, 1); } - else if(in_array(PackageFlags::MEDIUM_COMPRESSION, $this->headers[PackageStructure::FLAGS], true)) + else if(in_array(PackageFlags::MEDIUM_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true)) { $data = gzcompress($data, 6); } - else if(in_array(PackageFlags::HIGH_COMPRESSION, $this->headers[PackageStructure::FLAGS], true)) + else if(in_array(PackageFlags::HIGH_COMPRESSION, $this->headers[PackageStructure::FLAGS->value], true)) { $data = gzcompress($data, 9); } @@ -239,7 +239,7 @@ } $pointer = sprintf("%d:%d", ftell($this->temp_file), strlen($data)); - $this->headers[PackageStructure::DIRECTORY][$name] = $pointer; + $this->headers[PackageStructure::DIRECTORY->value][$name] = $pointer; $this->data_written = true; fwrite($this->temp_file, $data); @@ -256,12 +256,12 @@ */ public function addPointer(string $name, int $offset, int $length): void { - if(isset($this->headers[PackageStructure::DIRECTORY][$name])) + if(isset($this->headers[PackageStructure::DIRECTORY->value][$name])) { return; } - $this->headers[PackageStructure::DIRECTORY][$name] = sprintf("%d:%d", $offset, $length); + $this->headers[PackageStructure::DIRECTORY->value][$name] = sprintf("%d:%d", $offset, $length); } /** diff --git a/src/ncc/Enums/PackageStructure.php b/src/ncc/Enums/PackageStructure.php index 19519f1..831d707 100644 --- a/src/ncc/Enums/PackageStructure.php +++ b/src/ncc/Enums/PackageStructure.php @@ -22,11 +22,11 @@ namespace ncc\Enums; - final class PackageStructure + enum PackageStructure : int { - public const FILE_VERSION = 0x73746669; + case FILE_VERSION = 0x73746669; - public const FLAGS = 0x73736166; + case FLAGS = 0x73736166; - public const DIRECTORY = 0x6f746365; + case DIRECTORY = 0x6f746365; } \ No newline at end of file