<?php use Icicle\Http\Client\Client; use Icicle\Http\Message\RequestInterface; use Icicle\Http\Message\Response; use Icicle\Http\Message\ResponseInterface; use Icicle\Socket\SocketInterface; use Icicle\Stream\MemorySink; $collector->addRoute("GET", "/", function (RequestInterface $request, SocketInterface $socket) { $stream = new MemorySink(); (yield $stream->end("hello world")); (yield new Response(200, ["content-type" => "text/html", "content-length" => $stream->getLength()], $stream)); }); $collector->addRoute("GET", "/test", function (RequestInterface $request, SocketInterface $socket) { $client = new Client(); /** @var ResponseInterface $response */ $response = (yield $client->request("GET", "http://jsonplaceholder.typicode.com/posts/1")); $stream1 = $response->getBody(); $stream2 = new MemorySink(); while ($stream1->isReadable()) { $data = (yield $stream1->read()); (yield $stream2->write($data)); } (yield $stream2->end()); (yield new Response(200, ["content-type" => "text/html", "content-length" => $stream2->getLength()], $stream2)); });