- Move 12 markdown files from root to docs/ subdirectories - Organize documentation by category: • docs/troubleshooting/ (1 file) - Technical troubleshooting guides • docs/deployment/ (4 files) - Deployment and security documentation • docs/guides/ (3 files) - Feature-specific guides • docs/planning/ (4 files) - Planning and improvement proposals Root directory cleanup: - Reduced from 16 to 4 markdown files in root - Only essential project files remain: • CLAUDE.md (AI instructions) • README.md (Main project readme) • CLEANUP_PLAN.md (Current cleanup plan) • SRC_STRUCTURE_IMPROVEMENTS.md (Structure improvements) This improves: ✅ Documentation discoverability ✅ Logical organization by purpose ✅ Clean root directory ✅ Better maintainability
58 lines
2.6 KiB
PHP
58 lines
2.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Framework\Http\Middlewares;
|
|
|
|
use App\Framework\Http\HttpMiddleware;
|
|
use App\Framework\Http\MiddlewareContext;
|
|
use App\Framework\Http\MiddlewarePriority;
|
|
use App\Framework\Http\MiddlewarePriorityAttribute;
|
|
use App\Framework\Http\Next;
|
|
use App\Framework\Http\RequestStateManager;
|
|
use App\Framework\Http\StateKey;
|
|
use App\Framework\Router\RouteResponder;
|
|
|
|
#[MiddlewarePriorityAttribute(MiddlewarePriority::ROUTING, -1)]
|
|
final readonly class ResponseGeneratorMiddleware implements HttpMiddleware
|
|
{
|
|
public function __construct(
|
|
private RouteResponder $responder,
|
|
) {
|
|
}
|
|
|
|
public function __invoke(MiddlewareContext $context, Next $next, RequestStateManager $stateManager): MiddlewareContext
|
|
{
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: __invoke called\n", FILE_APPEND);
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: Has CONTROLLER_RESULT: " . ($stateManager->has(StateKey::CONTROLLER_RESULT) ? 'YES' : 'NO') . "\n", FILE_APPEND);
|
|
|
|
if ($stateManager->has(StateKey::CONTROLLER_RESULT)) {
|
|
$controllerResult = $stateManager->get(StateKey::CONTROLLER_RESULT);
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: Controller result class: " . get_class($controllerResult) . "\n", FILE_APPEND);
|
|
error_log("ResponseGeneratorMiddleware: Controller result class: " . get_class($controllerResult));
|
|
|
|
if (method_exists($controllerResult, 'template')) {
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: Template: " . $controllerResult->template . "\n", FILE_APPEND);
|
|
error_log("ResponseGeneratorMiddleware: Template: " . $controllerResult->template);
|
|
}
|
|
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: About to call responder->respond\n", FILE_APPEND);
|
|
$originalResponse = $this->responder->respond($controllerResult);
|
|
file_put_contents('/tmp/debug.log', "ResponseGeneratorMiddleware: Response body length: " . strlen($originalResponse->body) . "\n", FILE_APPEND);
|
|
error_log("ResponseGeneratorMiddleware: Response body length: " . strlen($originalResponse->body));
|
|
|
|
// Kontext mit der generierten Response aktualisieren
|
|
$updatedContext = $context->withResponse($originalResponse);
|
|
$resultContext = $next($updatedContext);
|
|
|
|
if (! $resultContext->hasResponse()) {
|
|
return $resultContext->withResponse($originalResponse);
|
|
}
|
|
|
|
return $resultContext;
|
|
}
|
|
|
|
return $next($context);
|
|
}
|
|
}
|