Skip to content

Commit 0ca635c

Browse files
committed
test: Response::arrayBuffer
1 parent 1c10ee7 commit 0ca635c

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

src/Response.php

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
<?php /** @noinspection PhpUnusedPrivateMethodInspection */
22
namespace Gt\Http;
33

4-
use Gt\Async\Loop;
54
use Gt\Curl\CurlInterface;
65
use Gt\Http\Header\ResponseHeaders;
76
use Gt\Json\JsonObject;
87
use Gt\Json\JsonObjectBuilder;
98
use Gt\Promise\Deferred;
109
use Gt\Promise\Promise;
11-
use Gt\Promise\PromiseState;
1210
use Gt\PropFunc\MagicProp;
1311
use Psr\Http\Message\ResponseInterface;
1412
use Psr\Http\Message\UriInterface;
@@ -171,23 +169,6 @@ public function getResponseHeaders():ResponseHeaders {
171169
return $this->headers;
172170
}
173171

174-
public function startDeferredResponse(
175-
CurlInterface $curl
176-
):Deferred {
177-
$this->deferred = new Deferred();
178-
$this->curl = $curl;
179-
return $this->deferred;
180-
}
181-
182-
public function endDeferredResponse(?string $integrity = null):void {
183-
$position = $this->stream->tell();
184-
$this->stream->rewind();
185-
$contents = $this->stream->getContents();
186-
$this->stream->seek($position);
187-
$this->checkIntegrity($integrity, $contents);
188-
$this->deferred->resolve($contents);
189-
}
190-
191172
/**
192173
* Takes the Response's stream and reads it to completion. Returns a Promise which resolves with the result
193174
* as a Gt\Http\ArrayBuffer.
@@ -223,6 +204,8 @@ private function arrayBufferFromResponseText(string $responseText):ArrayBuffer {
223204
for($i = 0; $i < $bytes; $i++) {
224205
$arrayBuffer->offsetSet($i, ord($responseText[$i]));
225206
}
207+
208+
return $arrayBuffer;
226209
}
227210

228211
/**

test/phpunit/ResponseTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<?php
22
namespace Gt\Http\Test;
33

4+
use Gt\Http\ArrayBuffer;
45
use Gt\Http\FormData;
56
use Gt\Http\Header\ResponseHeaders;
67
use Gt\Http\Request;
@@ -104,6 +105,36 @@ public function testReloadWithoutQuery() {
104105
self::assertSame($expectedRelativePath, $sut->getHeaderLine("Location"));
105106
}
106107

108+
public function testArrayBuffer():void {
109+
$bodyData = random_bytes(1050);
110+
$stream = new Stream();
111+
$stream->write($bodyData);
112+
113+
$sut = new Response();
114+
$sut = $sut->withBody($stream);
115+
116+
$actualArrayBuffer = null;
117+
$sut->arrayBuffer()->then(function($arrayBuffer) use(&$actualArrayBuffer) {
118+
$actualArrayBuffer = $arrayBuffer;
119+
});
120+
121+
self::assertInstanceOf(ArrayBuffer::class, $actualArrayBuffer);
122+
self::assertSame(1050, $actualArrayBuffer->byteLength);
123+
}
124+
125+
public function testAsyncArrayBuffer():void {
126+
$bodyData = random_bytes(1050);
127+
$stream = new Stream();
128+
$stream->write($bodyData);
129+
130+
$sut = new Response();
131+
$sut = $sut->withBody($stream);
132+
133+
$arrayBuffer = $sut->awaitArrayBuffer();
134+
self::assertInstanceOf(ArrayBuffer::class, $arrayBuffer);
135+
self::assertSame(1050, $arrayBuffer->byteLength);
136+
}
137+
107138
public function testJson():void {
108139
$jsonString = json_encode(["name" => "phpgt"]);
109140

0 commit comments

Comments
 (0)