diff --git a/src/LaravelEcho/Http/Controllers/EchoController.php b/src/LaravelEcho/Http/Controllers/EchoController.php index b62549e..4e5095b 100644 --- a/src/LaravelEcho/Http/Controllers/EchoController.php +++ b/src/LaravelEcho/Http/Controllers/EchoController.php @@ -3,10 +3,12 @@ namespace BeyondCode\LaravelWebSockets\LaravelEcho\Http\Controllers; use BeyondCode\LaravelWebSockets\ClientProviders\Client; +use BeyondCode\LaravelWebSockets\QueryParameters; use Exception; use Illuminate\Http\Request; use GuzzleHttp\Psr7 as gPsr; use GuzzleHttp\Psr7\Response; +use MongoDB\Driver\Query; use Ratchet\ConnectionInterface; use Illuminate\Http\JsonResponse; use GuzzleHttp\Psr7\ServerRequest; @@ -28,16 +30,13 @@ abstract class EchoController implements HttpServerInterface public function onOpen(ConnectionInterface $connection, RequestInterface $request = null) { - $queryParameters = []; - parse_str($request->getUri()->getQuery(), $queryParameters); - $serverRequest = (new ServerRequest( $request->getMethod(), $request->getUri(), $request->getHeaders(), $request->getBody(), $request->getProtocolVersion() - ))->withQueryParams($queryParameters); + ))->withQueryParams(QueryParameters::create($request)->all()); $laravelRequest = Request::createFromBase((new HttpFoundationFactory)->createRequest($serverRequest)); diff --git a/src/LaravelEcho/WebSocket/PusherServer.php b/src/LaravelEcho/WebSocket/PusherServer.php index b81127e..b4bc693 100644 --- a/src/LaravelEcho/WebSocket/PusherServer.php +++ b/src/LaravelEcho/WebSocket/PusherServer.php @@ -3,6 +3,7 @@ namespace BeyondCode\LaravelWebSockets\LaravelEcho\WebSocket; use BeyondCode\LaravelWebSockets\LaravelEcho\Pusher\Dashboard; +use BeyondCode\LaravelWebSockets\QueryParameters; use Exception; use Ratchet\ConnectionInterface; use Ratchet\RFC6455\Messaging\MessageInterface; @@ -54,14 +55,10 @@ class PusherServer extends WebSocketController protected function verifyConnection(ConnectionInterface $connection) { - /** @var \GuzzleHttp\Psr7\Request $request */ - $request = $connection->httpRequest; + $appKey = QueryParameters::create($connection->httpRequest)->get('appKey'); - $queryParameters = []; - parse_str($request->getUri()->getQuery(), $queryParameters); - - if (! $client = Client::findByAppKey($queryParameters['appKey'])) { - throw new UnknownAppKeyException($queryParameters['appKey']); + if (! $client = Client::findByAppKey($appKey)) { + throw new UnknownAppKeyException($appKey); } $connection->client = $client; diff --git a/src/QueryParameters.php b/src/QueryParameters.php new file mode 100644 index 0000000..85fecff --- /dev/null +++ b/src/QueryParameters.php @@ -0,0 +1,35 @@ +request = $request; + } + + public function all(): array + { + $queryParameters = []; + + parse_str($this->request->getUri()->getQuery(), $queryParameters); + + return $queryParameters; + } + + public function get(string $name): string + { + return $this->all()[$name] ?? ''; + } +} \ No newline at end of file diff --git a/src/Server/Logger/MessageLogger.php b/src/Server/Logger/MessageLogger.php index a2c5bce..2ff4ddf 100644 --- a/src/Server/Logger/MessageLogger.php +++ b/src/Server/Logger/MessageLogger.php @@ -8,6 +8,7 @@ namespace BeyondCode\LaravelWebSockets\Server\Logger; +use BeyondCode\LaravelWebSockets\QueryParameters; use Exception; use Ratchet\ConnectionInterface; use Ratchet\RFC6455\Messaging\MessageInterface; @@ -34,12 +35,9 @@ class MessageLogger extends Logger implements MessageComponentInterface public function onOpen(ConnectionInterface $connection) { - $request = $connection->httpRequest; + $appKey = QueryParameters::create($connection->httpRequest)->get('appKey'); - $queryParameters = []; - parse_str($request->getUri()->getQuery(), $queryParameters); - - $this->warn("New connection opened for app key {$queryParameters['appKey']}."); + $this->warn("New connection opened for app key {$appKey}."); $this->app->onOpen(ConnectionLogger::decorate($connection)); }