diff --git a/.travis.yml b/.travis.yml index d2fb7563..f5449647 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,11 +4,15 @@ php: - 5.4 - 5.5 - 5.6 + - 7 - hhvm + - hhvm-nightly matrix: allow_failures: + - php: 7 - php: hhvm + - php: hhvm-nightly before_script: - composer install --dev --prefer-source diff --git a/CHANGELOG.md b/CHANGELOG.md index a2251cd0..c66b2ad6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.4.1 (2014-05-21) +* Replaced guzzle/parser with guzzlehttp/psr7 by @cboden +* FIX Continue Header by @iannsp +* Missing type hint by @marenzo + ## 0.4.0 (2014-02-02) * BC break: Bump minimum PHP version to PHP 5.4, remove 5.3 specific hacks diff --git a/README.md b/README.md index e1279b0e..f39b025f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Http Component -[![Build Status](https://secure.travis-ci.org/reactphp/http.png?branch=master)](http://travis-ci.org/reactphp/http) +[![Build Status](https://secure.travis-ci.org/reactphp/http.png?branch=master)](http://travis-ci.org/reactphp/http) [![Code Climate](https://codeclimate.com/github/reactphp/http/badges/gpa.svg)](https://codeclimate.com/github/reactphp/http) Library for building an evented http server. 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/Request.php b/src/Request.php index ddd62ad8..0607b8e7 100644 --- a/src/Request.php +++ b/src/Request.php @@ -39,7 +39,7 @@ public function getMethod() public function getPath() { - return $this->url['path']; + return $this->url->getPath(); } public function getUrl() diff --git a/src/RequestParser.php b/src/RequestParser.php index c33c1fc2..cb2c5ed1 100644 --- a/src/RequestParser.php +++ b/src/RequestParser.php @@ -3,7 +3,7 @@ namespace React\Http; use Evenement\EventEmitter; -use Guzzle\Parser\Message\MessageParser; +use GuzzleHttp\Psr7 as g7; /** * @event headers @@ -91,20 +91,27 @@ protected function headerSizeExceeded() public function parseHeaders($data) { - $parser = new MessageParser(); - $parsed = $parser->parseRequest($data); + $psrRequest = g7\parse_request($data); - $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]; + } + }); + return new Request( - $parsed['method'], - $parsed['request_url'], + $psrRequest->getMethod(), + $psrRequest->getUri(), $parsedQuery, - $parsed['version'], - $parsed['headers'] + $psrRequest->getProtocolVersion(), + $headers ); }