/** * Creates a HttpRequest instance using the given string. * * @param string $requestBuffer The HTTP request. * @return HttpRequest */ public static function FromString($requestBuffer) { $req = new HttpRequest(); $req->requestBuffer = $requestBuffer; $req->gotHeaders(); return $req; }
/** * Tests the HTTP headers are parsed correctly. */ public function testParseHeaders() { $requestLine = "GET / HTTP/1.1"; $headerArray = ["Header1" => "Value1", "Header2" => "Value2", "Header3" => "Value3", "Header4" => "Value4"]; $requestString = self::BuildRequest($requestLine, $headerArray); $req = HttpRequest::FromString($requestString); self::assertEquals($headerArray, $req->getHeaders()); self::assertEquals($requestLine, $req->getRequestLine()); }
/** * Tests a good handshake. */ public function testValidateGoodRequest() { // from the RFC $requestString = <<<REQ GET / HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 REQ; $req = HttpRequest::FromString($requestString); $webSocketRequest = new WebSocketRequest($req); self::assertTrue($webSocketRequest->validate()); }
/** * Accepts a new connection. * * @param resource $listenerStream The socket created by stream_socket_server */ private function newConnection($listenerStream) { $stream = stream_socket_accept($listenerStream); // The first bit of data from the client should be a HTTP request. $req = HttpRequest::FromStream($stream, [$this, 'gotHeaders']); // Send the stream to the HTTP request handler. $this->streams->addStream($stream, null, $req); }