Improved response middleware, added tests
This commit is contained in:
@ -35,7 +35,14 @@ class ResponseMiddleware
|
||||
{
|
||||
$promise = new Promise(
|
||||
function (callable $resolve) use ($request, $next) {
|
||||
$resolve($next($request));
|
||||
try {
|
||||
$resolve($next($request));
|
||||
} catch (SecurityException $t) {
|
||||
$resolve(Response::plaintext("Access Denied")->withStatus(Response::STATUS_UNAUTHORIZED));
|
||||
} catch (\Throwable $t) {
|
||||
$this->logger->warning(get_class($t).": ".$t->getMessage(), [ 'file'=>$t->getFile(), 'line'=>$t->getLine() ]);
|
||||
$resolve(Response::plaintext("500: Internal Server Error (".$t->getMessage().")\n")->withStatus(500));
|
||||
}
|
||||
}
|
||||
);
|
||||
return $promise->then(
|
||||
@ -50,19 +57,10 @@ class ResponseMiddleware
|
||||
return Response::plaintext($response);
|
||||
}
|
||||
return Response::plaintext((string)$response);
|
||||
},
|
||||
function (Throwable $t) {
|
||||
if ($t instanceof SecurityException) {
|
||||
return Response::plaintext("Access Denied")->withStatus(Response::STATUS_UNAUTHORIZED);
|
||||
}
|
||||
$this->logger->warning(get_class($t).": ".$t->getMessage(), [ 'file'=>$t->getFile(), 'line'=>$t->getLine() ]);
|
||||
return Response::plaintext("500: Internal Server Error (".$t->getMessage().")\n")->withStatus(500);
|
||||
}
|
||||
)->then(
|
||||
function ($response) use ($request) {
|
||||
assert("\$response instanceof ResponseInterface");
|
||||
$host = ($request->getServerParams()['SERVER_ADDR']??"");
|
||||
//. ":" . ($request->getServerParams()['SERVER_PORT']??"80");
|
||||
$this->logger->debug(sprintf("%s %s %s → %3d (%d)",
|
||||
$request->getServerParams()['REMOTE_ADDR'],
|
||||
$request->getMethod(),
|
||||
|
Reference in New Issue
Block a user