/** * Compress content * * @return Response */ public function compress(Request $request, Response $response) { $acceptEncoding = $request->getHeaderLine('accept-encoding'); $encodings = array_flip(trim_array(explode(',', $acceptEncoding))); if (isset($encodings['gzip'])) { return $this->compressBody($response, 'gzip', 'gzcompress'); } if (isset($encodings['deflate'])) { return $this->compressBody($response, 'deflate', 'gzdeflate'); } return $response; }
public function testSimulateRequest() { $simulatedRequest = "DELETE / HTTP/1.1\r\nBar: faz\r\nHost: php-middleware.com"; $postBody = http_build_query([RequestSimulatorMiddleware::PARAM => $simulatedRequest]); $stream = new Stream('php://memory', 'wb+'); $stream->write($postBody); $request = new ServerRequest([], [], new Uri(), 'POST', $stream, ['Content-type' => 'application/x-www-form-urlencoded']); $responseBody = json_encode(['boo' => 'foo']); $response = new Response('php://memory', 200, ['content-type' => 'application/json']); $response->getBody()->write($responseBody); $next = function (ServerRequestInterface $request, ResponseInterface $response) { $this->assertSame('DELETE', $request->getMethod()); $this->assertSame('faz', $request->getHeaderLine('Bar')); return $response; }; /* @var $result ResponseInterface */ $result = call_user_func($this->middleware, $request, $response, $next); $body = (string) $result->getBody(); $this->assertContains('text/html', $result->getHeaderLine('Content-type')); $this->assertContains('{"boo":"foo"}', $body); $this->assertContains('<html>', $body); $this->assertContains('DELETE / HTTP/1.1', $body); }