Fixing more Guzzle API breaks

This commit is contained in:
Chris Boden 2013-06-01 20:24:11 -04:00
parent 1a5dd77bb8
commit 8e92f5fd9a
6 changed files with 54 additions and 45 deletions

View File

@ -27,7 +27,7 @@
, "require": { , "require": {
"php": ">=5.3.3" "php": ">=5.3.3"
, "react/socket": "0.2.*" , "react/socket": "0.2.*"
, "guzzle/http": ">=3.0,<=3.5" , "guzzle/http": "~3.0"
, "symfony/http-foundation": "~2.1" , "symfony/http-foundation": "~2.1"
} }
} }

74
composer.lock generated
View File

@ -1,4 +1,8 @@
{ {
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
],
"hash": "9ccce99ef687cb79dad8a4c581f38cc5", "hash": "9ccce99ef687cb79dad8a4c581f38cc5",
"packages": [ "packages": [
{ {
@ -24,6 +28,7 @@
"Evenement": "src" "Evenement": "src"
} }
}, },
"notification-url": "https://packagist.org/downloads/",
"license": [ "license": [
"MIT" "MIT"
], ],
@ -42,17 +47,17 @@
}, },
{ {
"name": "guzzle/common", "name": "guzzle/common",
"version": "v3.3.0", "version": "v3.6.0",
"target-dir": "Guzzle/Common", "target-dir": "Guzzle/Common",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/common.git", "url": "https://github.com/guzzle/common.git",
"reference": "v3.3.0" "reference": "v3.6.0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/common/zipball/v3.3.0", "url": "https://api.github.com/repos/guzzle/common/zipball/v3.6.0",
"reference": "v3.3.0", "reference": "v3.6.0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -62,7 +67,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "3.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -82,21 +87,21 @@
"event", "event",
"exception" "exception"
], ],
"time": "2013-03-04 00:41:45" "time": "2013-05-30 07:01:25"
}, },
{ {
"name": "guzzle/http", "name": "guzzle/http",
"version": "v3.3.0", "version": "v3.6.0",
"target-dir": "Guzzle/Http", "target-dir": "Guzzle/Http",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/http.git", "url": "https://github.com/guzzle/http.git",
"reference": "v3.3.0" "reference": "v3.6.0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/http/zipball/v3.3.0", "url": "https://api.github.com/repos/guzzle/http/zipball/v3.6.0",
"reference": "v3.3.0", "reference": "v3.6.0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -111,7 +116,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "3.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -139,21 +144,21 @@
"http", "http",
"http client" "http client"
], ],
"time": "2013-03-03 21:40:51" "time": "2013-05-30 07:01:25"
}, },
{ {
"name": "guzzle/parser", "name": "guzzle/parser",
"version": "v3.3.0", "version": "v3.6.0",
"target-dir": "Guzzle/Parser", "target-dir": "Guzzle/Parser",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/parser.git", "url": "https://github.com/guzzle/parser.git",
"reference": "v3.3.0" "reference": "v3.6.0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/parser/zipball/v3.3.0", "url": "https://api.github.com/repos/guzzle/parser/zipball/v3.6.0",
"reference": "v3.3.0", "reference": "v3.6.0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -162,7 +167,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "3.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -183,31 +188,34 @@
"message", "message",
"url" "url"
], ],
"time": "2013-01-12 21:43:21" "time": "2013-05-30 07:01:25"
}, },
{ {
"name": "guzzle/stream", "name": "guzzle/stream",
"version": "v3.3.0", "version": "v3.6.0",
"target-dir": "Guzzle/Stream", "target-dir": "Guzzle/Stream",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/guzzle/stream.git", "url": "https://github.com/guzzle/stream.git",
"reference": "v3.3.0" "reference": "v3.6.0"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/guzzle/stream/zipball/v3.3.0", "url": "https://api.github.com/repos/guzzle/stream/zipball/v3.6.0",
"reference": "v3.3.0", "reference": "v3.6.0",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"guzzle/common": "self.version", "guzzle/common": "self.version",
"php": ">=5.3.2" "php": ">=5.3.2"
}, },
"suggest": {
"guzzle/http": "To convert Guzzle request objects to PHP streams"
},
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0-dev" "dev-master": "3.6-dev"
} }
}, },
"autoload": { "autoload": {
@ -233,7 +241,7 @@
"component", "component",
"stream" "stream"
], ],
"time": "2013-03-03 03:07:02" "time": "2013-05-30 07:01:25"
}, },
{ {
"name": "react/event-loop", "name": "react/event-loop",
@ -367,17 +375,17 @@
}, },
{ {
"name": "symfony/event-dispatcher", "name": "symfony/event-dispatcher",
"version": "v2.2.0", "version": "v2.2.1",
"target-dir": "Symfony/Component/EventDispatcher", "target-dir": "Symfony/Component/EventDispatcher",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/EventDispatcher.git", "url": "https://github.com/symfony/EventDispatcher.git",
"reference": "v2.2.0-RC3" "reference": "v2.2.1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.2.0-RC3", "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.2.1",
"reference": "v2.2.0-RC3", "reference": "v2.2.1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -421,17 +429,17 @@
}, },
{ {
"name": "symfony/http-foundation", "name": "symfony/http-foundation",
"version": "v2.2.0", "version": "v2.2.1",
"target-dir": "Symfony/Component/HttpFoundation", "target-dir": "Symfony/Component/HttpFoundation",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/symfony/HttpFoundation.git", "url": "https://github.com/symfony/HttpFoundation.git",
"reference": "v2.2.0" "reference": "v2.2.1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.2.0", "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.2.1",
"reference": "v2.2.0", "reference": "v2.2.1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -467,7 +475,7 @@
], ],
"description": "Symfony HttpFoundation Component", "description": "Symfony HttpFoundation Component",
"homepage": "http://symfony.com", "homepage": "http://symfony.com",
"time": "2013-02-26 09:42:13" "time": "2013-04-06 10:15:43"
} }
], ],
"packages-dev": [ "packages-dev": [

View File

@ -23,7 +23,7 @@ class Hixie76 implements VersionInterface {
* {@inheritdoc} * {@inheritdoc}
*/ */
public function isProtocol(RequestInterface $request) { public function isProtocol(RequestInterface $request) {
return !(null === $request->getHeader('Sec-WebSocket-Key2', true)); return !(null === $request->getHeader('Sec-WebSocket-Key2'));
} }
/** /**
@ -44,13 +44,13 @@ class Hixie76 implements VersionInterface {
throw new \UnderflowException("Not enough data received to issue challenge response"); throw new \UnderflowException("Not enough data received to issue challenge response");
} }
$challenge = $this->sign($request->getHeader('Sec-WebSocket-Key1', true), $request->getHeader('Sec-WebSocket-Key2', true), $body); $challenge = $this->sign((string)$request->getHeader('Sec-WebSocket-Key1'), (string)$request->getHeader('Sec-WebSocket-Key2'), $body);
$headers = array( $headers = array(
'Upgrade' => 'WebSocket' 'Upgrade' => 'WebSocket'
, 'Connection' => 'Upgrade' , 'Connection' => 'Upgrade'
, 'Sec-WebSocket-Origin' => $request->getHeader('Origin', true) , 'Sec-WebSocket-Origin' => (string)$request->getHeader('Origin')
, 'Sec-WebSocket-Location' => 'ws://' . $request->getHeader('Host', true) . $request->getPath() , 'Sec-WebSocket-Location' => 'ws://' . (string)$request->getHeader('Host') . $request->getPath()
); );
$response = new Response(101, $headers, $challenge); $response = new Response(101, $headers, $challenge);

View File

@ -4,7 +4,8 @@ use Guzzle\Http\Message\RequestInterface;
class HyBi10 extends RFC6455 { class HyBi10 extends RFC6455 {
public function isProtocol(RequestInterface $request) { public function isProtocol(RequestInterface $request) {
$version = (int)((string)($request->getHeader('Sec-WebSocket-Version', -1))); $version = (int)(string)$request->getHeader('Sec-WebSocket-Version');
return ($version >= 6 && $version < 13); return ($version >= 6 && $version < 13);
} }

View File

@ -50,7 +50,7 @@ class RFC6455 implements VersionInterface {
* {@inheritdoc} * {@inheritdoc}
*/ */
public function isProtocol(RequestInterface $request) { public function isProtocol(RequestInterface $request) {
$version = (int)((string)($request->getHeader('Sec-WebSocket-Version', -1))); $version = (int)(string)$request->getHeader('Sec-WebSocket-Version');
return ($this->getVersionNumber() === $version); return ($this->getVersionNumber() === $version);
} }
@ -73,7 +73,7 @@ class RFC6455 implements VersionInterface {
return new Response(101, array( return new Response(101, array(
'Upgrade' => 'websocket' 'Upgrade' => 'websocket'
, 'Connection' => 'Upgrade' , 'Connection' => 'Upgrade'
, 'Sec-WebSocket-Accept' => $this->sign($request->getHeader('Sec-WebSocket-Key')) , 'Sec-WebSocket-Accept' => $this->sign((string)$request->getHeader('Sec-WebSocket-Key'))
)); ));
} }

View File

@ -19,10 +19,10 @@ class HandshakeVerifier {
$passes += (int)$this->verifyMethod($request->getMethod()); $passes += (int)$this->verifyMethod($request->getMethod());
$passes += (int)$this->verifyHTTPVersion($request->getProtocolVersion()); $passes += (int)$this->verifyHTTPVersion($request->getProtocolVersion());
$passes += (int)$this->verifyRequestURI($request->getPath()); $passes += (int)$this->verifyRequestURI($request->getPath());
$passes += (int)$this->verifyHost($request->getHeader('Host', true)); $passes += (int)$this->verifyHost((string)$request->getHeader('Host'));
$passes += (int)$this->verifyUpgradeRequest($request->getHeader('Upgrade', true)); $passes += (int)$this->verifyUpgradeRequest((string)$request->getHeader('Upgrade'));
$passes += (int)$this->verifyConnection($request->getHeader('Connection', true)); $passes += (int)$this->verifyConnection((string)$request->getHeader('Connection'));
$passes += (int)$this->verifyKey($request->getHeader('Sec-WebSocket-Key', true)); $passes += (int)$this->verifyKey((string)$request->getHeader('Sec-WebSocket-Key'));
//$passes += (int)$this->verifyVersion($headers['Sec-WebSocket-Version']); // Temporarily breaking functionality //$passes += (int)$this->verifyVersion($headers['Sec-WebSocket-Version']); // Temporarily breaking functionality
return (7 === $passes); return (7 === $passes);