Client negotiation cleanup

This commit is contained in:
Chris Boden 2016-02-08 07:50:17 -05:00
parent affba40d16
commit 1e828bf7d4
3 changed files with 13 additions and 21 deletions

View File

@ -5,7 +5,7 @@ use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface; use Psr\Http\Message\UriInterface;
use GuzzleHttp\Psr7\Request; use GuzzleHttp\Psr7\Request;
class ClientNegotiator implements ClientNegotiatorInterface { class ClientNegotiator {
/** /**
* @var ResponseVerifier * @var ResponseVerifier
*/ */
@ -22,7 +22,7 @@ class ClientNegotiator implements ClientNegotiatorInterface {
$this->defaultHeader = new Request('GET', '', [ $this->defaultHeader = new Request('GET', '', [
'Connection' => 'Upgrade' 'Connection' => 'Upgrade'
, 'Upgrade' => 'websocket' , 'Upgrade' => 'websocket'
, 'Sec-WebSocket-Version' => 13 , 'Sec-WebSocket-Version' => $this->getVersion()
, 'User-Agent' => "RatchetRFC/0.0.0" , 'User-Agent' => "RatchetRFC/0.0.0"
]); ]);
} }
@ -48,4 +48,7 @@ class ClientNegotiator implements ClientNegotiatorInterface {
return base64_encode($key); return base64_encode($key);
} }
public function getVersion() {
return 13;
}
} }

View File

@ -1,11 +0,0 @@
<?php
namespace Ratchet\RFC6455\Handshake;
interface ClientNegotiatorInterface {
const GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
}

View File

@ -11,15 +11,15 @@ class ResponseVerifier {
$passes += (int)$this->verifyUpgrade($response->getHeader('Upgrade')); $passes += (int)$this->verifyUpgrade($response->getHeader('Upgrade'));
$passes += (int)$this->verifyConnection($response->getHeader('Connection')); $passes += (int)$this->verifyConnection($response->getHeader('Connection'));
$passes += (int)$this->verifySecWebSocketAccept( $passes += (int)$this->verifySecWebSocketAccept(
$response->getHeader('Sec-WebSocket-Accept'), $response->getHeader('Sec-WebSocket-Accept')
$request->getHeader('sec-websocket-key') , $request->getHeader('Sec-WebSocket-Accept')
); );
return (4 == $passes); return (4 === $passes);
} }
public function verifyStatus($status) { public function verifyStatus($status) {
return ($status == 101); return ((int)$status === 101);
} }
public function verifyUpgrade(array $upgrade) { public function verifyUpgrade(array $upgrade) {
@ -34,10 +34,10 @@ class ResponseVerifier {
return ( return (
1 === count($swa) && 1 === count($swa) &&
1 === count($key) && 1 === count($key) &&
$swa[0] == $this->sign($key[0])); $swa[0] === $this->sign($key[0]));
} }
public function sign($key) { public function sign($key) {
return base64_encode(sha1($key . Negotiator::GUID, true)); return base64_encode(sha1($key . NegotiatorInterface::GUID, true));
} }
} }