From 8e92f5fd9a059279e14db60763439448f0af76b4 Mon Sep 17 00:00:00 2001 From: Chris Boden Date: Sat, 1 Jun 2013 20:24:11 -0400 Subject: [PATCH] Fixing more Guzzle API breaks --- composer.json | 2 +- composer.lock | 74 ++++++++++--------- src/Ratchet/WebSocket/Version/Hixie76.php | 8 +- src/Ratchet/WebSocket/Version/HyBi10.php | 3 +- src/Ratchet/WebSocket/Version/RFC6455.php | 4 +- .../Version/RFC6455/HandshakeVerifier.php | 8 +- 6 files changed, 54 insertions(+), 45 deletions(-) diff --git a/composer.json b/composer.json index 1aa42a1..f83a0b0 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ , "require": { "php": ">=5.3.3" , "react/socket": "0.2.*" - , "guzzle/http": ">=3.0,<=3.5" + , "guzzle/http": "~3.0" , "symfony/http-foundation": "~2.1" } } diff --git a/composer.lock b/composer.lock index 9df5a60..756f447 100644 --- a/composer.lock +++ b/composer.lock @@ -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", "packages": [ { @@ -24,6 +28,7 @@ "Evenement": "src" } }, + "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], @@ -42,17 +47,17 @@ }, { "name": "guzzle/common", - "version": "v3.3.0", + "version": "v3.6.0", "target-dir": "Guzzle/Common", "source": { "type": "git", "url": "https://github.com/guzzle/common.git", - "reference": "v3.3.0" + "reference": "v3.6.0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/common/zipball/v3.3.0", - "reference": "v3.3.0", + "url": "https://api.github.com/repos/guzzle/common/zipball/v3.6.0", + "reference": "v3.6.0", "shasum": "" }, "require": { @@ -62,7 +67,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -82,21 +87,21 @@ "event", "exception" ], - "time": "2013-03-04 00:41:45" + "time": "2013-05-30 07:01:25" }, { "name": "guzzle/http", - "version": "v3.3.0", + "version": "v3.6.0", "target-dir": "Guzzle/Http", "source": { "type": "git", "url": "https://github.com/guzzle/http.git", - "reference": "v3.3.0" + "reference": "v3.6.0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/http/zipball/v3.3.0", - "reference": "v3.3.0", + "url": "https://api.github.com/repos/guzzle/http/zipball/v3.6.0", + "reference": "v3.6.0", "shasum": "" }, "require": { @@ -111,7 +116,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -139,21 +144,21 @@ "http", "http client" ], - "time": "2013-03-03 21:40:51" + "time": "2013-05-30 07:01:25" }, { "name": "guzzle/parser", - "version": "v3.3.0", + "version": "v3.6.0", "target-dir": "Guzzle/Parser", "source": { "type": "git", "url": "https://github.com/guzzle/parser.git", - "reference": "v3.3.0" + "reference": "v3.6.0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/parser/zipball/v3.3.0", - "reference": "v3.3.0", + "url": "https://api.github.com/repos/guzzle/parser/zipball/v3.6.0", + "reference": "v3.6.0", "shasum": "" }, "require": { @@ -162,7 +167,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -183,31 +188,34 @@ "message", "url" ], - "time": "2013-01-12 21:43:21" + "time": "2013-05-30 07:01:25" }, { "name": "guzzle/stream", - "version": "v3.3.0", + "version": "v3.6.0", "target-dir": "Guzzle/Stream", "source": { "type": "git", "url": "https://github.com/guzzle/stream.git", - "reference": "v3.3.0" + "reference": "v3.6.0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/stream/zipball/v3.3.0", - "reference": "v3.3.0", + "url": "https://api.github.com/repos/guzzle/stream/zipball/v3.6.0", + "reference": "v3.6.0", "shasum": "" }, "require": { "guzzle/common": "self.version", "php": ">=5.3.2" }, + "suggest": { + "guzzle/http": "To convert Guzzle request objects to PHP streams" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -233,7 +241,7 @@ "component", "stream" ], - "time": "2013-03-03 03:07:02" + "time": "2013-05-30 07:01:25" }, { "name": "react/event-loop", @@ -367,17 +375,17 @@ }, { "name": "symfony/event-dispatcher", - "version": "v2.2.0", + "version": "v2.2.1", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "v2.2.0-RC3" + "reference": "v2.2.1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.2.0-RC3", - "reference": "v2.2.0-RC3", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.2.1", + "reference": "v2.2.1", "shasum": "" }, "require": { @@ -421,17 +429,17 @@ }, { "name": "symfony/http-foundation", - "version": "v2.2.0", + "version": "v2.2.1", "target-dir": "Symfony/Component/HttpFoundation", "source": { "type": "git", "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "v2.2.0" + "reference": "v2.2.1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.2.0", - "reference": "v2.2.0", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/v2.2.1", + "reference": "v2.2.1", "shasum": "" }, "require": { @@ -467,7 +475,7 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "http://symfony.com", - "time": "2013-02-26 09:42:13" + "time": "2013-04-06 10:15:43" } ], "packages-dev": [ diff --git a/src/Ratchet/WebSocket/Version/Hixie76.php b/src/Ratchet/WebSocket/Version/Hixie76.php index 069263a..8b0e2c4 100644 --- a/src/Ratchet/WebSocket/Version/Hixie76.php +++ b/src/Ratchet/WebSocket/Version/Hixie76.php @@ -23,7 +23,7 @@ class Hixie76 implements VersionInterface { * {@inheritdoc} */ 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"); } - $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( 'Upgrade' => 'WebSocket' , 'Connection' => 'Upgrade' - , 'Sec-WebSocket-Origin' => $request->getHeader('Origin', true) - , 'Sec-WebSocket-Location' => 'ws://' . $request->getHeader('Host', true) . $request->getPath() + , 'Sec-WebSocket-Origin' => (string)$request->getHeader('Origin') + , 'Sec-WebSocket-Location' => 'ws://' . (string)$request->getHeader('Host') . $request->getPath() ); $response = new Response(101, $headers, $challenge); diff --git a/src/Ratchet/WebSocket/Version/HyBi10.php b/src/Ratchet/WebSocket/Version/HyBi10.php index 0ac41fa..a53d338 100644 --- a/src/Ratchet/WebSocket/Version/HyBi10.php +++ b/src/Ratchet/WebSocket/Version/HyBi10.php @@ -4,7 +4,8 @@ use Guzzle\Http\Message\RequestInterface; class HyBi10 extends RFC6455 { 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); } diff --git a/src/Ratchet/WebSocket/Version/RFC6455.php b/src/Ratchet/WebSocket/Version/RFC6455.php index aab0435..23e166c 100644 --- a/src/Ratchet/WebSocket/Version/RFC6455.php +++ b/src/Ratchet/WebSocket/Version/RFC6455.php @@ -50,7 +50,7 @@ class RFC6455 implements VersionInterface { * {@inheritdoc} */ 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); } @@ -73,7 +73,7 @@ class RFC6455 implements VersionInterface { return new Response(101, array( 'Upgrade' => 'websocket' , 'Connection' => 'Upgrade' - , 'Sec-WebSocket-Accept' => $this->sign($request->getHeader('Sec-WebSocket-Key')) + , 'Sec-WebSocket-Accept' => $this->sign((string)$request->getHeader('Sec-WebSocket-Key')) )); } diff --git a/src/Ratchet/WebSocket/Version/RFC6455/HandshakeVerifier.php b/src/Ratchet/WebSocket/Version/RFC6455/HandshakeVerifier.php index 7fbf452..838a047 100644 --- a/src/Ratchet/WebSocket/Version/RFC6455/HandshakeVerifier.php +++ b/src/Ratchet/WebSocket/Version/RFC6455/HandshakeVerifier.php @@ -19,10 +19,10 @@ class HandshakeVerifier { $passes += (int)$this->verifyMethod($request->getMethod()); $passes += (int)$this->verifyHTTPVersion($request->getProtocolVersion()); $passes += (int)$this->verifyRequestURI($request->getPath()); - $passes += (int)$this->verifyHost($request->getHeader('Host', true)); - $passes += (int)$this->verifyUpgradeRequest($request->getHeader('Upgrade', true)); - $passes += (int)$this->verifyConnection($request->getHeader('Connection', true)); - $passes += (int)$this->verifyKey($request->getHeader('Sec-WebSocket-Key', true)); + $passes += (int)$this->verifyHost((string)$request->getHeader('Host')); + $passes += (int)$this->verifyUpgradeRequest((string)$request->getHeader('Upgrade')); + $passes += (int)$this->verifyConnection((string)$request->getHeader('Connection')); + $passes += (int)$this->verifyKey((string)$request->getHeader('Sec-WebSocket-Key')); //$passes += (int)$this->verifyVersion($headers['Sec-WebSocket-Version']); // Temporarily breaking functionality return (7 === $passes);