/** * Parses a request message string into a request object. * * @param string $message Request message string. * * @return Request */ function parse_request($message) { $data = _parse_message($message); $matches = []; if (!preg_match('/^[\\S]+\\s+([a-zA-Z]+:\\/\\/|\\/).*/', $data['start-line'], $matches)) { throw new \InvalidArgumentException('Invalid request string'); } $parts = explode(' ', $data['start-line'], 3); $version = isset($parts[2]) ? explode('/', $parts[2])[1] : '1.1'; $request = new Request($parts[0], $matches[1] === '/' ? _parse_request_uri($parts[1], $data['headers']) : $parts[1], $data['headers'], $data['body'], $version); return $matches[1] === '/' ? $request : $request->withRequestTarget($parts[1]); }
/** * @expectedException \InvalidArgumentException */ public function testRequestTargetDoesNotAllowSpaces() { $r1 = new Request('GET', '/'); $r1->withRequestTarget('/foo bar'); }