Skip to content

Commit 10af1f5

Browse files
committed
Use new Guzzle PSR7 parser
1 parent e11296d commit 10af1f5

File tree

2 files changed

+21
-14
lines changed

2 files changed

+21
-14
lines changed

composer.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
"license": "MIT",
66
"require": {
77
"php": ">=5.4.0",
8-
"guzzle/parser": "~3.0",
9-
"react/socket": "0.4.*",
10-
"react/stream": "0.4.*",
11-
"evenement/evenement": "~2.0"
8+
"guzzlehttp/psr7": "^1.0",
9+
"react/socket": "^0.4",
10+
"react/stream": "^0.4",
11+
"evenement/evenement": "^2.0"
1212
},
1313
"autoload": {
1414
"psr-4": {

src/RequestHeaderParser.php

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace React\Http;
44

55
use Evenement\EventEmitter;
6-
use Guzzle\Parser\Message\MessageParser;
6+
use GuzzleHttp\Psr7 as g7;
77

88
/**
99
* @event headers
@@ -36,20 +36,27 @@ public function parseRequest($data)
3636
{
3737
list($headers, $bodyBuffer) = explode("\r\n\r\n", $data, 2);
3838

39-
$parser = new MessageParser();
40-
$parsed = $parser->parseRequest($headers."\r\n\r\n");
39+
$psrRequest = g7\parse_request($headers);
4140

42-
$parsedQuery = array();
43-
if ($parsed['request_url']['query']) {
44-
parse_str($parsed['request_url']['query'], $parsedQuery);
41+
$parsedQuery = [];
42+
$queryString = $psrRequest->getUri()->getQuery();
43+
if ($queryString) {
44+
parse_str($queryString, $parsedQuery);
4545
}
4646

47+
$headers = $psrRequest->getHeaders();
48+
array_walk($headers, function(&$val) {
49+
if (1 === count($val)) {
50+
$val = $val[0];
51+
}
52+
});
53+
4754
$request = new Request(
48-
$parsed['method'],
49-
$parsed['request_url']['path'],
55+
$psrRequest->getMethod(),
56+
$psrRequest ->getUri()->getPath(),
5057
$parsedQuery,
51-
$parsed['version'],
52-
$parsed['headers']
58+
$psrRequest->getProtocolVersion(),
59+
$headers
5360
);
5461

5562
return array($request, $bodyBuffer);

0 commit comments

Comments
 (0)