aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/maennchen/zipstream-php/test/EndlessCycleStream.php
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2024-11-07 19:23:35 +0100
committerHarald Eilertsen <haraldei@anduin.net>2024-11-08 16:43:29 +0100
commitfe30b5497593dcfb4445d72c99fa357011cebf46 (patch)
tree6d4d89fed5dcd52e26dd1e07e7cae04206c737d4 /vendor/maennchen/zipstream-php/test/EndlessCycleStream.php
parentb00ae997a5dab923a99e1f1cccf35bb52eba9a62 (diff)
downloadvolse-hubzilla-fe30b5497593dcfb4445d72c99fa357011cebf46.tar.gz
volse-hubzilla-fe30b5497593dcfb4445d72c99fa357011cebf46.tar.bz2
volse-hubzilla-fe30b5497593dcfb4445d72c99fa357011cebf46.zip
Update php-epub-meta and use composer for dep handling.
Note that we upgrade to the 2.x branch of the dependency, as the 3.x branch requires PHP version 8.2 or later. There's no reason for us to move our minimum supported version of PHP just yet.
Diffstat (limited to 'vendor/maennchen/zipstream-php/test/EndlessCycleStream.php')
-rw-r--r--vendor/maennchen/zipstream-php/test/EndlessCycleStream.php104
1 files changed, 104 insertions, 0 deletions
diff --git a/vendor/maennchen/zipstream-php/test/EndlessCycleStream.php b/vendor/maennchen/zipstream-php/test/EndlessCycleStream.php
new file mode 100644
index 000000000..d9e7df1fb
--- /dev/null
+++ b/vendor/maennchen/zipstream-php/test/EndlessCycleStream.php
@@ -0,0 +1,104 @@
+<?php
+
+declare(strict_types=1);
+
+namespace ZipStream\Test;
+
+use Psr\Http\Message\StreamInterface;
+use RuntimeException;
+
+class EndlessCycleStream implements StreamInterface
+{
+ private int $offset = 0;
+
+ public function __construct(private readonly string $toRepeat = '0') {}
+
+ public function __toString(): string
+ {
+ throw new RuntimeException('Infinite Stream!');
+ }
+
+ public function close(): void
+ {
+ $this->detach();
+ }
+
+ /**
+ * @return null
+ */
+ public function detach()
+ {
+ return;
+ }
+
+ public function getSize(): ?int
+ {
+ return null;
+ }
+
+ public function tell(): int
+ {
+ return $this->offset;
+ }
+
+ public function eof(): bool
+ {
+ return false;
+ }
+
+ public function isSeekable(): bool
+ {
+ return true;
+ }
+
+ public function seek(int $offset, int $whence = SEEK_SET): void
+ {
+ switch ($whence) {
+ case SEEK_SET:
+ $this->offset = $offset;
+ break;
+ case SEEK_CUR:
+ $this->offset += $offset;
+ break;
+ case SEEK_END:
+ throw new RuntimeException('Infinite Stream!');
+ break;
+ }
+ }
+
+ public function rewind(): void
+ {
+ $this->seek(0);
+ }
+
+ public function isWritable(): bool
+ {
+ return false;
+ }
+
+ public function write(string $string): int
+ {
+ throw new RuntimeException('Not writeable');
+ }
+
+ public function isReadable(): bool
+ {
+ return true;
+ }
+
+ public function read(int $length): string
+ {
+ $this->offset += $length;
+ return substr(str_repeat($this->toRepeat, (int) ceil($length / strlen($this->toRepeat))), 0, $length);
+ }
+
+ public function getContents(): string
+ {
+ throw new RuntimeException('Infinite Stream!');
+ }
+
+ public function getMetadata(?string $key = null): array|null
+ {
+ return $key !== null ? null : [];
+ }
+}