chore: complete update

This commit is contained in:
2025-07-17 16:24:20 +02:00
parent 899227b0a4
commit 64a7051137
1300 changed files with 85570 additions and 2756 deletions

View File

@@ -0,0 +1,61 @@
<?php
namespace App\Framework\Http;
/**
* Hilfsklasse für erweiterte Header-Funktionen ohne Modifikation der Headers-Klasse
*/
final readonly class HeaderManipulator
{
/**
* Konvertiert einen Header-String in ein Headers-Objekt
*/
public static function fromString(string $headersRaw): Headers
{
$headers = new Headers();
// Zeilenumbrüche vereinheitlichen und in Zeilen aufteilen
$lines = preg_split('/\r\n|\n|\r/', $headersRaw);
// Die erste Zeile kann die Status-Zeile sein, die überspringen wir
$statusLineFound = false;
foreach ($lines as $line) {
// Leere Zeilen überspringen
if (trim($line) === '') {
continue;
}
// Status-Zeile (HTTP/1.1 200 OK) überspringen
if (!$statusLineFound && preg_match('/^HTTP\/\d\.\d\s+\d+/', $line)) {
$statusLineFound = true;
continue;
}
// Header im Format "Name: Wert" parsen
if (preg_match('/^([^:]+):\s*(.*)$/', $line, $matches)) {
$name = $matches[1];
$value = $matches[2];
$headers = $headers->withAdded($name, $value);
}
}
return $headers;
}
/**
* Formatiert Headers für cURL
*/
public static function formatForCurl(Headers $headers): array
{
$formattedHeaders = [];
foreach ($headers->all() as $name => $values) {
foreach ($values as $value) {
$formattedHeaders[] = "$name: $value";
}
}
return $formattedHeaders;
}
}