Skip to content

Commit 6d622b5

Browse files
committed
Make ExecuteJavascriptMiddleware handle requests
1 parent a4e6f15 commit 6d622b5

File tree

2 files changed

+25
-16
lines changed

2 files changed

+25
-16
lines changed

src/Downloader/Middleware/ExecuteJavascriptMiddleware.php

+17-5
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313

1414
namespace RoachPHP\Downloader\Middleware;
1515

16+
use GuzzleHttp\Psr7\Response as Psr7Response;
1617
use Psr\Log\LoggerInterface;
18+
use RoachPHP\Http\Request;
1719
use RoachPHP\Http\Response;
1820
use RoachPHP\Support\Configurable;
1921
use Spatie\Browsershot\Browsershot;
2022

21-
final class ExecuteJavascriptMiddleware implements ResponseMiddlewareInterface
23+
final class ExecuteJavascriptMiddleware implements RequestMiddlewareInterface
2224
{
2325
use Configurable;
2426

@@ -38,10 +40,10 @@ public function __construct(
3840
$this->getBrowsershot = $getBrowsershot ?? static fn (string $uri): Browsershot => Browsershot::url($uri)->waitUntilNetworkIdle();
3941
}
4042

41-
public function handleResponse(Response $response): Response
43+
public function handleRequest(Request $request): Request
4244
{
4345
$browsershot = $this->configureBrowsershot(
44-
$response->getRequest()->getUri(),
46+
$request->getUri(),
4547
);
4648

4749
try {
@@ -52,10 +54,20 @@ public function handleResponse(Response $response): Response
5254
'trace' => $e->getTraceAsString(),
5355
]);
5456

55-
return $response->drop('Error while executing javascript');
57+
return $request->drop('Error while executing javascript');
5658
}
5759

58-
return $response->withBody($body);
60+
return $request->withResponse(
61+
$this->makeResponse($request, $body),
62+
);
63+
}
64+
65+
private function makeResponse(Request $request, string $body): Response
66+
{
67+
return new Response(
68+
new Psr7Response(200, [], $body),
69+
$request,
70+
);
5971
}
6072

6173
/**

tests/Downloader/Middleware/ExecuteJavascriptMiddlewareTest.php

+8-11
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,11 @@ final class ExecuteJavascriptMiddlewareTest extends IntegrationTestCase
2828

2929
public function testUpdateResponseBodyWithHtmlAfterExecutingJavascript(): void
3030
{
31-
$response = $this->makeResponse(
32-
$this->makeRequest('http://localhost:8000/javascript'),
33-
);
31+
$request = $this->makeRequest('http://localhost:8000/javascript');
3432
$middleware = new ExecuteJavascriptMiddleware(new FakeLogger());
3533

36-
$processedResponse = $middleware->handleResponse($response);
34+
$processedRequest = $middleware->handleRequest($request);
35+
$processedResponse = $processedRequest->getResponse();
3736

3837
self::assertSame('Headline', $processedResponse->filter('#content h1')->text(''));
3938
self::assertSame('I was loaded via Javascript!', $processedResponse->filter('#content p')->text(''));
@@ -52,9 +51,9 @@ public function bodyHtml(): string
5251
static fn (string $uri): Browsershot => $throwingBrowsershot->setUrl($uri),
5352
);
5453

55-
$processedResponse = $middleware->handleResponse($this->makeResponse());
54+
$processedRequest = $middleware->handleRequest($this->makeRequest('http://fake-url.com'));
5655

57-
self::assertTrue($processedResponse->wasDropped());
56+
self::assertTrue($processedRequest->wasDropped());
5857
}
5958

6059
public function testLogErrors(): void
@@ -71,7 +70,7 @@ public function bodyHtml(): string
7170
static fn (string $uri): Browsershot => $throwingBrowsershot->setUrl($uri),
7271
);
7372

74-
$middleware->handleResponse($this->makeResponse());
73+
$middleware->handleRequest($this->makeRequest('http://fake-url.com'));
7574

7675
self::assertTrue(
7776
$logger->messageWasLogged(
@@ -84,16 +83,14 @@ public function bodyHtml(): string
8483
public function testUsesTheProvidedUserAgentOption(): void
8584
{
8685
$mockBrowserShot = $this->createMock(Browsershot::class);
87-
$response = $this->makeResponse(
88-
$this->makeRequest('http://localhost:8000/javascript'),
89-
);
86+
$request = $this->makeRequest('http://localhost:8000/javascript');
9087
$middleware = new ExecuteJavascriptMiddleware(new FakeLogger(), static fn (string $uri): Browsershot => $mockBrowserShot);
9188
$middleware->configure(['userAgent' => 'custom']);
9289

9390
$mockBrowserShot->expects(self::once())
9491
->method('userAgent')
9592
->with(self::equalTo('custom'));
9693

97-
$middleware->handleResponse($response);
94+
$middleware->handleRequest($request);
9895
}
9996
}

0 commit comments

Comments
 (0)