feat: initial version

Signed-off-by: Sebastian Krupinski <root@LAPTOP-7DVOR6NC>
This commit was merged in pull request #1.
This commit is contained in:
Sebastian Krupinski
2026-02-20 16:41:19 -05:00
committed by Sebastian Krupinski
parent a313767846
commit e51c65bf19
139 changed files with 11256 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<?php
declare(strict_types=1);
namespace Gricob\IMAP\Transport\Socket;
use Gricob\IMAP\Transport\ResponseStream;
final class SocketResponseStream implements ResponseStream
{
/**
* @param resource $stream
*/
public function __construct(private $stream)
{
}
public function read(int $bytes): string
{
if ($bytes <= 0) {
return '';
}
$remainingBytes = $bytes;
$data = '';
do {
$data .= fread($this->stream, $remainingBytes);
$remainingBytes = $bytes - strlen($data);
} while ($remainingBytes > 0);
return $data;
}
public function readLine(): string
{
$line = '';
while ("\n" !== ($char = fread($this->stream, 1))) {
$line .= $char;
}
return $line."\n";
}
}