refactor: use DTO and terminate middleware for better performance

- Add PageviewData readonly DTO class for type safety
- Update AnalyticsClient to accept PageviewData instead of array
- Move analytics sending to terminate() method (runs after response sent)
- Update all tests for new DTO pattern
This commit is contained in:
mathiaspalmqvist committed 2026-01-03 15:09:48 +01:00
1 parent 448ac3e4cf
commit e3911ca12c
6 files changed
+154 -116

No files matched your search

+6 -2
View File
@@ -25,9 +25,13 @@ function createMiddleware(): AnalyticsMiddleware
function handleRequest(AnalyticsMiddleware $middleware, Request $request): Response
{
return $middleware->handle($request, function ($req) {
$response = $middleware->handle($request, function ($req) {
return new Response('Test content');
});
$middleware->terminate($request, $response);
return $response;
}
it('captures analytics data for web requests', function () {
@@ -45,7 +49,7 @@ it('captures analytics data for web requests', function () {
$data = $request->data();
return $request->url() === 'https://analytics.mattitja.cloud/api/send' &&
$data['k'] === 'test-site-key' &&
$data['k'] === 'testsiteky' &&
$data['u'] === 'https://example.com/test' &&
$data['r'] === 'https://google.com' &&
$data['ip'] === '192.168.1.1' &&