Skip to content

Commit

Permalink
fix: file handling (#10)
Browse files Browse the repository at this point in the history
  • Loading branch information
qroques authored Jun 20, 2024
1 parent 332b0ad commit 09531cb
Show file tree
Hide file tree
Showing 11 changed files with 62 additions and 26 deletions.
1 change: 1 addition & 0 deletions src/Assembler.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public function assemble(array $fragments): ResilientData
}
}
}

$resilientData = ResilientData::fromBinaryData($data);

if (!$resilientData->getHash()->equals($manifest->resilientDataHash)) {
Expand Down
32 changes: 21 additions & 11 deletions src/ResilientData.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,25 @@

class ResilientData
{
public function __construct(private readonly mixed $data) {}
private function __construct(private readonly string $data) {}

public function getData(): mixed
public static function fromFile(string $filename): self
{
$data = file_get_contents($filename);

if (false === $data) {
throw new \RuntimeException('Could not read the file');
}

return new self($data);
}

public static function fromString(string $data): self
{
return new self($data);
}

public function getData(): string
{
return $this->data;
}
Expand All @@ -20,17 +36,11 @@ public function getHash(): Hash

public function getBinaryData(): string
{
$stringData = json_encode($this->data);

if (false === $stringData) {
throw new \RuntimeException('Failed to encode data to JSON: '.json_last_error_msg());
}

return base64_encode($stringData);
return base64_encode($this->data);
}

public static function fromBinaryData(string $data): self
public static function fromBinaryData(string $binaryData): self
{
return new self(json_decode(base64_decode($data)));
return new self(base64_decode($binaryData));
}
}
2 changes: 1 addition & 1 deletion tests/fixtures/fragments/fragment_0.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
O:30:"Qroques\ResilientData\Fragment":3:{s:10:"dataChunks";O:32:"Qroques\ResilientData\Collection":1:{s:5:"items";a:6:{i:0;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:7;}s:4:"data";s:274:"IkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFNlZCBub24gcmlzdXMuIFN1c3BlbmRpc3NlIGxlY3R1cyB0b3J0b3IsIGRpZ25pc3NpbSBzaXQgYW1ldCwgYWRpcGlzY2luZyBuZWMsIHVsdHJpY2llcyBzZWQsIGRvbG9yLiBDcmFzIGVsZW1lbnR1bSB1bHRyaWNlcyBkaWFtLiBNYWVjZW5hcyBsaWd1bGEgbW";}i:1;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:11;}s:4:"data";s:274:"Fzc2EsIHZhcml1cyBhLCBzZW1wZXIgY29uZ3VlLCBldWlzbW9kIG5vbiwgbWkuIFByb2luIHBvcnR0aXRvciwgb3JjaSBuZWMgbm9udW1teSBtb2xlc3RpZSwgZW5pbSBlc3QgZWxlaWZlbmQgbWksIG5vbiBmZXJtZW50dW0gZGlhbSBuaXNsIHNpdCBhbWV0IGVyYXQuIER1aXMgc2VtcGVyLiBEdWlzIGFyY3UgbWFzc2EsIHNjZWxlcmlzcXVlIHZpdGFlLCBjb25z";}i:2;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:13;}s:4:"data";s:274:"ZXF1YXQgaW4sIHByZXRpdW0gYSwgZW5pbS4gUGVsbGVudGVzcXVlIGNvbmd1ZS4gVXQgaW4gcmlzdXMgdm9sdXRwYXQgbGliZXJvIHBoYXJldHJhIHRlbXBvci4gQ3JhcyB2ZXN0aWJ1bHVtIGJpYmVuZHVtIGF1Z3VlLiBQcmFlc2VudCBlZ2VzdGFzIGxlbyBpbiBwZWRlLiBQcmFlc2VudCBibGFuZGl0IG9kaW8gZXUgZW5pbS4gUGVsbGVudGVzcXVlIHNlZCBkdW";}i:3;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:19;}s:4:"data";s:274:"b24gZGlhbSBzb2RhbGVzIGhlbmRyZXJpdC5cblV0IHZlbGl0IG1hdXJpcywgZWdlc3RhcyBzZWQsIGdyYXZpZGEgbmVjLCBvcm5hcmUgdXQsIG1pLiBBZW5lYW4gdXQgb3JjaSB2ZWwgbWFzc2Egc3VzY2lwaXQgcHVsdmluYXIuIE51bGxhIHNvbGxpY2l0dWRpbi4gRnVzY2UgdmFyaXVzLCBsaWd1bGEgbm9uIHRlbXB1cyBhbGlxdWFtLCBudW5jIHR1cnBpcyB1bG";}i:4;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:21;}s:4:"data";s:274:"xhbWNvcnBlciBuaWJoLCBpbiB0ZW1wdXMgc2FwaWVuIGVyb3Mgdml0YWUgbGlndWxhLiBQZWxsZW50ZXNxdWUgcmhvbmN1cyBudW5jIGV0IGF1Z3VlLiBJbnRlZ2VyIGlkIGZlbGlzLiBDdXJhYml0dXIgYWxpcXVldCBwZWxsZW50ZXNxdWUgZGlhbS4gSW50ZWdlciBxdWlzIG1ldHVzIHZpdGFlIGVsaXQgbG9ib3J0aXMgZWdlc3Rhcy4gTG9yZW0gaXBzdW0gZG9s";}i:5;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:25;}s:4:"data";s:274:"RhZSBlcmF0LiBQcm9pbiBmZXVnaWF0LCBhdWd1ZSBub24gZWxlbWVudHVtIHBvc3VlcmUsIG1ldHVzIHB1cnVzIGlhY3VsaXMgbGVjdHVzLCBldCB0cmlzdGlxdWUgbGlndWxhIGp1c3RvIHZpdGFlIG1hZ25hLlxuQWxpcXVhbSBjb252YWxsaXMgc29sbGljaXR1ZGluIHB1cnVzLiBQcmFlc2VudCBhbGlxdWFtLCBlbmltIGF0IGZlcm1lbnR1bSBtb2xsaXMsIGxp";}}}s:10:"identifier";O:40:"Qroques\ResilientData\FragmentIdentifier":1:{s:5:"value";i:0;}s:8:"manifest";O:30:"Qroques\ResilientData\Manifest":2:{s:17:"resilientDataHash";O:26:"Qroques\ResilientData\Hash":1:{s:4:"hash";s:64:"e5a00d17fdf9193553d3201f96594ed5ebf28c1932c1a19057863f67a4525972";}s:22:"splittingConfiguration";O:44:"Qroques\ResilientData\SplittingConfiguration":2:{s:17:"numberOfFragments";i:5;s:14:"acceptableLoss";i:2;}}}
O:30:"Qroques\ResilientData\Fragment":3:{s:10:"dataChunks";O:32:"Qroques\ResilientData\Collection":1:{s:5:"items";a:6:{i:0;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:7;}s:4:"data";s:274:"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIG5vbiByaXN1cy4gU3VzcGVuZGlzc2UgbGVjdHVzIHRvcnRvciwgZGlnbmlzc2ltIHNpdCBhbWV0LCBhZGlwaXNjaW5nIG5lYywgdWx0cmljaWVzIHNlZCwgZG9sb3IuIENyYXMgZWxlbWVudHVtIHVsdHJpY2VzIGRpYW0uIE1hZWNlbmFzIGxpZ3VsYSBtYX";}i:1;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:11;}s:4:"data";s:274:"NzYSwgdmFyaXVzIGEsIHNlbXBlciBjb25ndWUsIGV1aXNtb2Qgbm9uLCBtaS4gUHJvaW4gcG9ydHRpdG9yLCBvcmNpIG5lYyBub251bW15IG1vbGVzdGllLCBlbmltIGVzdCBlbGVpZmVuZCBtaSwgbm9uIGZlcm1lbnR1bSBkaWFtIG5pc2wgc2l0IGFtZXQgZXJhdC4gRHVpcyBzZW1wZXIuIER1aXMgYXJjdSBtYXNzYSwgc2NlbGVyaXNxdWUgdml0YWUsIGNvbnNl";}i:2;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:13;}s:4:"data";s:274:"cXVhdCBpbiwgcHJldGl1bSBhLCBlbmltLiBQZWxsZW50ZXNxdWUgY29uZ3VlLiBVdCBpbiByaXN1cyB2b2x1dHBhdCBsaWJlcm8gcGhhcmV0cmEgdGVtcG9yLiBDcmFzIHZlc3RpYnVsdW0gYmliZW5kdW0gYXVndWUuIFByYWVzZW50IGVnZXN0YXMgbGVvIGluIHBlZGUuIFByYWVzZW50IGJsYW5kaXQgb2RpbyBldSBlbmltLiBQZWxsZW50ZXNxdWUgc2VkIGR1aS";}i:3;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:19;}s:4:"data";s:274:"biBkaWFtIHNvZGFsZXMgaGVuZHJlcml0LgpVdCB2ZWxpdCBtYXVyaXMsIGVnZXN0YXMgc2VkLCBncmF2aWRhIG5lYywgb3JuYXJlIHV0LCBtaS4gQWVuZWFuIHV0IG9yY2kgdmVsIG1hc3NhIHN1c2NpcGl0IHB1bHZpbmFyLiBOdWxsYSBzb2xsaWNpdHVkaW4uIEZ1c2NlIHZhcml1cywgbGlndWxhIG5vbiB0ZW1wdXMgYWxpcXVhbSwgbnVuYyB0dXJwaXMgdWxsYW";}i:4;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:21;}s:4:"data";s:274:"1jb3JwZXIgbmliaCwgaW4gdGVtcHVzIHNhcGllbiBlcm9zIHZpdGFlIGxpZ3VsYS4gUGVsbGVudGVzcXVlIHJob25jdXMgbnVuYyBldCBhdWd1ZS4gSW50ZWdlciBpZCBmZWxpcy4gQ3VyYWJpdHVyIGFsaXF1ZXQgcGVsbGVudGVzcXVlIGRpYW0uIEludGVnZXIgcXVpcyBtZXR1cyB2aXRhZSBlbGl0IGxvYm9ydGlzIGVnZXN0YXMuIExvcmVtIGlwc3VtIGRvbG9y";}i:5;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:25;}s:4:"data";s:274:"UgZXJhdC4gUHJvaW4gZmV1Z2lhdCwgYXVndWUgbm9uIGVsZW1lbnR1bSBwb3N1ZXJlLCBtZXR1cyBwdXJ1cyBpYWN1bGlzIGxlY3R1cywgZXQgdHJpc3RpcXVlIGxpZ3VsYSBqdXN0byB2aXRhZSBtYWduYS4KQWxpcXVhbSBjb252YWxsaXMgc29sbGljaXR1ZGluIHB1cnVzLiBQcmFlc2VudCBhbGlxdWFtLCBlbmltIGF0IGZlcm1lbnR1bSBtb2xsaXMsIGxpZ3Vs";}}}s:10:"identifier";O:40:"Qroques\ResilientData\FragmentIdentifier":1:{s:5:"value";i:0;}s:8:"manifest";O:30:"Qroques\ResilientData\Manifest":2:{s:17:"resilientDataHash";O:26:"Qroques\ResilientData\Hash":1:{s:4:"hash";s:64:"ccec74f22f298deb6bc62053b4043839561ea1a08650e7d79f798b6e018202a6";}s:22:"splittingConfiguration";O:44:"Qroques\ResilientData\SplittingConfiguration":2:{s:17:"numberOfFragments";i:5;s:14:"acceptableLoss";i:2;}}}
2 changes: 1 addition & 1 deletion tests/fixtures/fragments/fragment_1.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
O:30:"Qroques\ResilientData\Fragment":3:{s:10:"dataChunks";O:32:"Qroques\ResilientData\Collection":1:{s:5:"items";a:6:{i:0;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:7;}s:4:"data";s:274:"IkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFNlZCBub24gcmlzdXMuIFN1c3BlbmRpc3NlIGxlY3R1cyB0b3J0b3IsIGRpZ25pc3NpbSBzaXQgYW1ldCwgYWRpcGlzY2luZyBuZWMsIHVsdHJpY2llcyBzZWQsIGRvbG9yLiBDcmFzIGVsZW1lbnR1bSB1bHRyaWNlcyBkaWFtLiBNYWVjZW5hcyBsaWd1bGEgbW";}i:1;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:11;}s:4:"data";s:274:"Fzc2EsIHZhcml1cyBhLCBzZW1wZXIgY29uZ3VlLCBldWlzbW9kIG5vbiwgbWkuIFByb2luIHBvcnR0aXRvciwgb3JjaSBuZWMgbm9udW1teSBtb2xlc3RpZSwgZW5pbSBlc3QgZWxlaWZlbmQgbWksIG5vbiBmZXJtZW50dW0gZGlhbSBuaXNsIHNpdCBhbWV0IGVyYXQuIER1aXMgc2VtcGVyLiBEdWlzIGFyY3UgbWFzc2EsIHNjZWxlcmlzcXVlIHZpdGFlLCBjb25z";}i:2;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:14;}s:4:"data";s:274:"kgdXQgYXVndWUgYmxhbmRpdCBzb2RhbGVzLiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kgbHVjdHVzIGV0IHVsdHJpY2VzIHBvc3VlcmUgY3ViaWxpYSBDdXJhZTsgQWxpcXVhbSBuaWJoLiBNYXVyaXMgYWMgbWF1cmlzIHNlZCBwZWRlIHBlbGxlbnRlc3F1ZSBmZXJtZW50dW0uIE1hZWNlbmFzIGFkaXBpc2NpbmcgYW50ZSBu";}i:3;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:19;}s:4:"data";s:274:"b24gZGlhbSBzb2RhbGVzIGhlbmRyZXJpdC5cblV0IHZlbGl0IG1hdXJpcywgZWdlc3RhcyBzZWQsIGdyYXZpZGEgbmVjLCBvcm5hcmUgdXQsIG1pLiBBZW5lYW4gdXQgb3JjaSB2ZWwgbWFzc2Egc3VzY2lwaXQgcHVsdmluYXIuIE51bGxhIHNvbGxpY2l0dWRpbi4gRnVzY2UgdmFyaXVzLCBsaWd1bGEgbm9uIHRlbXB1cyBhbGlxdWFtLCBudW5jIHR1cnBpcyB1bG";}i:4;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:22;}s:4:"data";s:274:"b3Igc2l0IGFtZXQsIGNvbnNlY3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIE1vcmJpIHZlbCBlcmF0IG5vbiBtYXVyaXMgY29udmFsbGlzIHZlaGljdWxhLiBOdWxsYSBldCBzYXBpZW4uIEludGVnZXIgdG9ydG9yIHRlbGx1cywgYWxpcXVhbSBmYXVjaWJ1cywgY29udmFsbGlzIGlkLCBjb25ndWUgZXUsIHF1YW0uIE1hdXJpcyB1bGxhbWNvcnBlciBmZWxpcyB2aX";}i:5;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:26;}s:4:"data";s:274:"Z3VsYSBtYXNzYSBhZGlwaXNjaW5nIG5pc2wsIGFjIGV1aXNtb2QgbmliaCBuaXNsIGV1IGxlY3R1cy4gRnVzY2UgdnVscHV0YXRlIHNlbSBhdCBzYXBpZW4uIFZpdmFtdXMgbGVvLiBBbGlxdWFtIGV1aXNtb2QgbGliZXJvIGV1IGVuaW0uIE51bGxhIG5lYyBmZWxpcyBzZWQgbGVvIHBsYWNlcmF0IGltcGVyZGlldC4gQWVuZWFuIHN1c2NpcGl0IG51bGxhIGluIG";}}}s:10:"identifier";O:40:"Qroques\ResilientData\FragmentIdentifier":1:{s:5:"value";i:1;}s:8:"manifest";O:30:"Qroques\ResilientData\Manifest":2:{s:17:"resilientDataHash";O:26:"Qroques\ResilientData\Hash":1:{s:4:"hash";s:64:"e5a00d17fdf9193553d3201f96594ed5ebf28c1932c1a19057863f67a4525972";}s:22:"splittingConfiguration";O:44:"Qroques\ResilientData\SplittingConfiguration":2:{s:17:"numberOfFragments";i:5;s:14:"acceptableLoss";i:2;}}}
O:30:"Qroques\ResilientData\Fragment":3:{s:10:"dataChunks";O:32:"Qroques\ResilientData\Collection":1:{s:5:"items";a:6:{i:0;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:7;}s:4:"data";s:274:"TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gU2VkIG5vbiByaXN1cy4gU3VzcGVuZGlzc2UgbGVjdHVzIHRvcnRvciwgZGlnbmlzc2ltIHNpdCBhbWV0LCBhZGlwaXNjaW5nIG5lYywgdWx0cmljaWVzIHNlZCwgZG9sb3IuIENyYXMgZWxlbWVudHVtIHVsdHJpY2VzIGRpYW0uIE1hZWNlbmFzIGxpZ3VsYSBtYX";}i:1;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:11;}s:4:"data";s:274:"NzYSwgdmFyaXVzIGEsIHNlbXBlciBjb25ndWUsIGV1aXNtb2Qgbm9uLCBtaS4gUHJvaW4gcG9ydHRpdG9yLCBvcmNpIG5lYyBub251bW15IG1vbGVzdGllLCBlbmltIGVzdCBlbGVpZmVuZCBtaSwgbm9uIGZlcm1lbnR1bSBkaWFtIG5pc2wgc2l0IGFtZXQgZXJhdC4gRHVpcyBzZW1wZXIuIER1aXMgYXJjdSBtYXNzYSwgc2NlbGVyaXNxdWUgdml0YWUsIGNvbnNl";}i:2;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:14;}s:4:"data";s:274:"B1dCBhdWd1ZSBibGFuZGl0IHNvZGFsZXMuIFZlc3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMgZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBBbGlxdWFtIG5pYmguIE1hdXJpcyBhYyBtYXVyaXMgc2VkIHBlZGUgcGVsbGVudGVzcXVlIGZlcm1lbnR1bS4gTWFlY2VuYXMgYWRpcGlzY2luZyBhbnRlIG5v";}i:3;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:19;}s:4:"data";s:274:"biBkaWFtIHNvZGFsZXMgaGVuZHJlcml0LgpVdCB2ZWxpdCBtYXVyaXMsIGVnZXN0YXMgc2VkLCBncmF2aWRhIG5lYywgb3JuYXJlIHV0LCBtaS4gQWVuZWFuIHV0IG9yY2kgdmVsIG1hc3NhIHN1c2NpcGl0IHB1bHZpbmFyLiBOdWxsYSBzb2xsaWNpdHVkaW4uIEZ1c2NlIHZhcml1cywgbGlndWxhIG5vbiB0ZW1wdXMgYWxpcXVhbSwgbnVuYyB0dXJwaXMgdWxsYW";}i:4;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:22;}s:4:"data";s:274:"IHNpdCBhbWV0LCBjb25zZWN0ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LiBNb3JiaSB2ZWwgZXJhdCBub24gbWF1cmlzIGNvbnZhbGxpcyB2ZWhpY3VsYS4gTnVsbGEgZXQgc2FwaWVuLiBJbnRlZ2VyIHRvcnRvciB0ZWxsdXMsIGFsaXF1YW0gZmF1Y2lidXMsIGNvbnZhbGxpcyBpZCwgY29uZ3VlIGV1LCBxdWFtLiBNYXVyaXMgdWxsYW1jb3JwZXIgZmVsaXMgdml0YW";}i:5;O:31:"Qroques\ResilientData\DataChunk":2:{s:10:"identifier";O:41:"Qroques\ResilientData\DataChunkIdentifier":1:{s:5:"value";i:26;}s:4:"data";s:274:"YSBtYXNzYSBhZGlwaXNjaW5nIG5pc2wsIGFjIGV1aXNtb2QgbmliaCBuaXNsIGV1IGxlY3R1cy4gRnVzY2UgdnVscHV0YXRlIHNlbSBhdCBzYXBpZW4uIFZpdmFtdXMgbGVvLiBBbGlxdWFtIGV1aXNtb2QgbGliZXJvIGV1IGVuaW0uIE51bGxhIG5lYyBmZWxpcyBzZWQgbGVvIHBsYWNlcmF0IGltcGVyZGlldC4gQWVuZWFuIHN1c2NpcGl0IG51bGxhIGluIGp1c3";}}}s:10:"identifier";O:40:"Qroques\ResilientData\FragmentIdentifier":1:{s:5:"value";i:1;}s:8:"manifest";O:30:"Qroques\ResilientData\Manifest":2:{s:17:"resilientDataHash";O:26:"Qroques\ResilientData\Hash":1:{s:4:"hash";s:64:"ccec74f22f298deb6bc62053b4043839561ea1a08650e7d79f798b6e018202a6";}s:22:"splittingConfiguration";O:44:"Qroques\ResilientData\SplittingConfiguration":2:{s:17:"numberOfFragments";i:5;s:14:"acceptableLoss";i:2;}}}
Loading

0 comments on commit 09531cb

Please sign in to comment.