diff --git a/app/Client/Factory.php b/app/Client/Factory.php index 438da80..7e4d8ea 100644 --- a/app/Client/Factory.php +++ b/app/Client/Factory.php @@ -75,8 +75,8 @@ class Factory protected function bindProxyManager() { - app()->singleton(ProxyManager::class, function ($app) { - return new ProxyManager($app->make(Configuration::class), $this->loop, $app->make(HttpClient::class)); + app()->bind(ProxyManager::class, function ($app) { + return new ProxyManager($app->make(Configuration::class), $this->loop); }); } diff --git a/app/Client/Http/HttpClient.php b/app/Client/Http/HttpClient.php index 48b144f..6e70803 100644 --- a/app/Client/Http/HttpClient.php +++ b/app/Client/Http/HttpClient.php @@ -49,15 +49,9 @@ class HttpClient dump($this->request->getMethod() . ' ' . $this->request->getUri()->getPath()); - /** - * Modifiers can already send a response to the proxy connection, - * which would result in the request being null. - */ - if (is_null($request)) { - return; - } - - $this->sendRequestToApplication($request, $proxyConnection); + transform($request, function ($request) use ($proxyConnection) { + $this->sendRequestToApplication($request, $proxyConnection); + }); } protected function passRequestThroughModifiers(RequestInterface $request, ?WebSocket $proxyConnection = null): ?RequestInterface @@ -103,7 +97,7 @@ class HttpClient /* @var $body \React\Stream\ReadableStreamInterface */ $body = $response->getBody(); - $this->logResponse($response->buffer); + $this->logResponse(str($response)); $body->on('data', function ($chunk) use ($proxyConnection, $response) { $response->buffer .= $chunk; @@ -127,12 +121,10 @@ class HttpClient protected function sendChunkToServer(string $chunk, ?WebSocket $proxyConnection = null) { - if (is_null($proxyConnection)) { - return; - } - - $binaryMsg = new Frame($chunk, true, Frame::OP_BINARY); - $proxyConnection->send($binaryMsg); + transform($proxyConnection, function ($proxyConnection) use ($chunk) { + $binaryMsg = new Frame($chunk, true, Frame::OP_BINARY); + $proxyConnection->send($binaryMsg); + }); } protected function logResponse(string $rawResponse) diff --git a/app/Client/Http/Modifiers/CheckBasicAuthentication.php b/app/Client/Http/Modifiers/CheckBasicAuthentication.php index f76f3ab..48ab8ff 100644 --- a/app/Client/Http/Modifiers/CheckBasicAuthentication.php +++ b/app/Client/Http/Modifiers/CheckBasicAuthentication.php @@ -18,7 +18,7 @@ class CheckBasicAuthentication $this->configuration = $configuration; } - public function handle(RequestInterface $request, WebSocket $proxyConnection): ?RequestInterface + public function handle(RequestInterface $request, ?WebSocket $proxyConnection): ?RequestInterface { if (! $this->requiresAuthentication() || is_null($proxyConnection)) { return $request; diff --git a/app/Client/ProxyManager.php b/app/Client/ProxyManager.php index 386f6e7..a583e5c 100644 --- a/app/Client/ProxyManager.php +++ b/app/Client/ProxyManager.php @@ -16,14 +16,10 @@ class ProxyManager /** @var LoopInterface */ protected $loop; - /** @var HttpClient */ - protected $httpClient; - - public function __construct(Configuration $configuration, LoopInterface $loop, HttpClient $httpClient) + public function __construct(Configuration $configuration, LoopInterface $loop) { $this->configuration = $configuration; $this->loop = $loop; - $this->httpClient = $httpClient; } public function createProxy(string $clientId, $connectionData) @@ -48,6 +44,6 @@ class ProxyManager protected function performRequest(WebSocket $proxyConnection, $requestId, string $requestData) { - $this->httpClient->performRequest((string)$requestData, $proxyConnection, $requestId); + app(HttpClient::class)->performRequest((string)$requestData, $proxyConnection, $requestId); } } diff --git a/app/HttpServer/Controllers/PostController.php b/app/HttpServer/Controllers/PostController.php index 75a1142..196f1e0 100644 --- a/app/HttpServer/Controllers/PostController.php +++ b/app/HttpServer/Controllers/PostController.php @@ -17,7 +17,6 @@ abstract class PostController extends Controller public function onOpen(ConnectionInterface $connection, RequestInterface $request = null) { - dump(memory_get_usage(true)); $connection->contentLength = $this->findContentLength($request->getHeaders()); $connection->requestBuffer = (string) $request->getBody();