Files
michaelschiemer/src/Framework/Http/RequestManipulator.php
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

98 lines
2.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Framework\Http;
/**
* Helper class for manipulating HTTP requests without modifying the original request objects
*/
final readonly class RequestManipulator
{
/**
* Create a new request with an additional header
*/
public function withHeader(HttpRequest $request, string $name, string $value): HttpRequest
{
$newHeaders = $request->headers->with($name, $value);
return new HttpRequest(
method: $request->method,
headers: $newHeaders,
body: $request->body,
path: $request->path,
queryParams: $request->queryParams,
files: $request->files,
cookies: $request->cookies,
server: $request->server,
id: $request->id,
parsedBody: $request->parsedBody,
);
}
/**
* Create a new request with updated headers
*/
public function withHeaders(HttpRequest $request, Headers $headers): HttpRequest
{
return new HttpRequest(
method: $request->method,
headers: $headers,
body: $request->body,
path: $request->path,
queryParams: $request->queryParams,
files: $request->files,
cookies: $request->cookies,
server: $request->server,
id: $request->id,
parsedBody: $request->parsedBody,
);
}
/**
* Create a new request without a specific header
*/
public function withoutHeader(HttpRequest $request, string $name): HttpRequest
{
$newHeaders = $request->headers->without($name);
return new HttpRequest(
method: $request->method,
headers: $newHeaders,
body: $request->body,
path: $request->path,
queryParams: $request->queryParams,
files: $request->files,
cookies: $request->cookies,
server: $request->server,
id: $request->id,
parsedBody: $request->parsedBody,
);
}
/**
* Create a new request with multiple headers added
*/
public function withAddedHeaders(HttpRequest $request, array $headers): HttpRequest
{
$newHeaders = $request->headers;
foreach ($headers as $name => $value) {
$newHeaders = $newHeaders->with($name, $value);
}
return new HttpRequest(
method: $request->method,
headers: $newHeaders,
body: $request->body,
path: $request->path,
queryParams: $request->queryParams,
files: $request->files,
cookies: $request->cookies,
server: $request->server,
id: $request->id,
parsedBody: $request->parsedBody,
);
}
}