This commit is contained in:
Marcel Pociot
2020-04-22 13:17:18 +02:00
parent e5e53b8b68
commit 6d212b1302
5 changed files with 13 additions and 26 deletions

View File

@@ -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);
});
}

View File

@@ -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)

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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();