diff --git a/composer.json b/composer.json index c15f6be9..cd1194da 100644 --- a/composer.json +++ b/composer.json @@ -5,10 +5,10 @@ "license": "MIT", "require": { "php": ">=5.4.0", - "guzzle/parser": "~3.0", - "react/socket": "0.4.*", - "react/stream": "0.4.*", - "evenement/evenement": "~2.0" + "guzzlehttp/psr7": "^1.0", + "react/socket": "^0.4", + "react/stream": "^0.4", + "evenement/evenement": "^2.0" }, "autoload": { "psr-4": { diff --git a/src/RequestHeaderParser.php b/src/RequestHeaderParser.php index 39bc127a..60a3aa1e 100644 --- a/src/RequestHeaderParser.php +++ b/src/RequestHeaderParser.php @@ -3,7 +3,7 @@ namespace React\Http; use Evenement\EventEmitter; -use Guzzle\Parser\Message\MessageParser; +use GuzzleHttp\Psr7 as g7; /** * @event headers @@ -36,20 +36,27 @@ public function parseRequest($data) { list($headers, $bodyBuffer) = explode("\r\n\r\n", $data, 2); - $parser = new MessageParser(); - $parsed = $parser->parseRequest($headers."\r\n\r\n"); + $psrRequest = g7\parse_request($headers); - $parsedQuery = array(); - if ($parsed['request_url']['query']) { - parse_str($parsed['request_url']['query'], $parsedQuery); + $parsedQuery = []; + $queryString = $psrRequest->getUri()->getQuery(); + if ($queryString) { + parse_str($queryString, $parsedQuery); } + $headers = $psrRequest->getHeaders(); + array_walk($headers, function(&$val) { + if (1 === count($val)) { + $val = $val[0]; + } + }); + $request = new Request( - $parsed['method'], - $parsed['request_url']['path'], + $psrRequest->getMethod(), + $psrRequest ->getUri()->getPath(), $parsedQuery, - $parsed['version'], - $parsed['headers'] + $psrRequest->getProtocolVersion(), + $headers ); return array($request, $bodyBuffer);