Skip to content

Commit 5501934

Browse files
committed
wip
1 parent c8ff583 commit 5501934

File tree

4 files changed

+41
-81
lines changed

4 files changed

+41
-81
lines changed

composer.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"sort-packages": true
1616
},
1717
"conflict": {
18-
"symfony/process": "<6|>=8"
18+
"petrknap/xz-utils": "<1|>=2"
1919
},
2020
"description": "Library for work with binary data and objects",
2121
"funding": [
@@ -52,10 +52,10 @@
5252
"ext-mbstring": "*",
5353
"ext-zlib": "*",
5454
"nunomaduro/phpinsights": "^2.11",
55+
"petrknap/xz-utils": "*",
5556
"phpstan/phpstan": "^1.12",
5657
"phpunit/phpunit": "^10.5",
57-
"squizlabs/php_codesniffer": "^3.7",
58-
"symfony/process": "*"
58+
"squizlabs/php_codesniffer": "^3.7"
5959
},
6060
"scripts": {
6161
"test": "@test-implementation",
@@ -82,6 +82,6 @@
8282
"ext-igbinary": "Required to serialize data via igbinary",
8383
"ext-mbstring": "Required to bite bytes",
8484
"ext-zlib": "Required to compress data",
85-
"symfony/process": "Required to call external executables"
85+
"petrknap/xz-utils": "Required to compress data"
8686
}
8787
}

src/Coder/ExternalCoder.php

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/Coder/Xz.php

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,42 @@
44

55
namespace PetrKnap\Binary\Coder;
66

7-
final class Xz extends ExternalCoder
7+
use PetrKnap\Shorts\HasRequirements;
8+
use PetrKnap\XzUtils\Xz as XzUtil;
9+
10+
final class Xz extends Coder
811
{
9-
public function encode(string $decoded, int|null $level = null): string
12+
use HasRequirements;
13+
14+
private int|null $compressionPreset;
15+
16+
public function __construct()
17+
{
18+
self::checkRequirements(
19+
classes: [
20+
XzUtil::class,
21+
],
22+
);
23+
}
24+
25+
public function encode(string $decoded, int|null $compressionPreset = null): string
1026
{
11-
$this->encodeCommand = ['xz', '--compress', '--stdout'];
12-
if ($level !== null) {
13-
$this->encodeCommand[] = "-{$level}";
14-
}
27+
$this->compressionPreset = $compressionPreset;
1528
return parent::encode($decoded);
1629
}
17-
public function decode(string $encoded): string
30+
31+
protected function doEncode(string $decoded): string
32+
{
33+
return (new XzUtil())->compress(
34+
data: $decoded,
35+
compressionPreset: $this->compressionPreset,
36+
);
37+
}
38+
39+
protected function doDecode(string $encoded): string
1840
{
19-
$this->decodeCommand = ['xz', '--decompress', '--stdout'];
20-
return parent::decode($encoded);
41+
return (new XzUtil())->decompress(
42+
data: $encoded,
43+
);
2144
}
2245
}

tests/Coder/XzTest.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@ public static function data(): array
1212
{
1313
$data = self::getDecodedData();
1414
return [
15-
'default preset' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), null],
16-
'preset 0' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhAQwAAACPmEGc4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), 0],
17-
'preset 9' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhARwAAAAQz1jM4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), 9],
15+
'default compression preset' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), null],
16+
'compression preset 0' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhAQwAAACPmEGc4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), 0],
17+
'compression preset 9' => [$data, base64_decode('/Td6WFoAAATm1rRGAgAhARwAAAAQz1jM4AA7ABxdAG0OUG7jCUfPj0z08gJbP9KgthIHS/jgLMk44AAAwVvY3vTzsZsAATg8V3V2GB+2830BAAAAAARZWg=='), 9],
1818
];
1919
}
2020

2121
#[DataProvider('data')]
22-
public function testEncodes(string $decoded, string $encoded, int|null $level): void
22+
public function testEncodes(string $decoded, string $encoded, int|null $compressionPreset): void
2323
{
2424
self::assertBinarySame(
2525
$encoded,
2626
(new Xz())->encode(
2727
$decoded,
28-
level: $level,
28+
compressionPreset: $compressionPreset,
2929
),
3030
);
3131
}

0 commit comments

Comments
 (0)