46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Engelsystem\Middleware;
|
||
|
|
||
|
use Psr\Http\Message\ResponseInterface;
|
||
|
use Psr\Http\Message\ServerRequestInterface;
|
||
|
use Psr\Http\Server\MiddlewareInterface;
|
||
|
use Psr\Http\Server\RequestHandlerInterface;
|
||
|
|
||
|
class SendResponseHandler implements MiddlewareInterface
|
||
|
{
|
||
|
/**
|
||
|
* Send the server response to the client
|
||
|
*
|
||
|
* This should be the first middleware
|
||
|
*
|
||
|
* @param ServerRequestInterface $request
|
||
|
* @param RequestHandlerInterface $handler
|
||
|
* @return ResponseInterface
|
||
|
*/
|
||
|
public function process(
|
||
|
ServerRequestInterface $request,
|
||
|
RequestHandlerInterface $handler
|
||
|
): ResponseInterface {
|
||
|
$response = $handler->handle($request);
|
||
|
|
||
|
if (!headers_sent()) {
|
||
|
header(sprintf(
|
||
|
'HTTP/%s %s %s',
|
||
|
$response->getProtocolVersion(),
|
||
|
$response->getStatusCode(),
|
||
|
$response->getReasonPhrase()
|
||
|
), true, $response->getStatusCode());
|
||
|
|
||
|
foreach ($response->getHeaders() as $name => $values) {
|
||
|
foreach ($values as $value) {
|
||
|
header($name . ': ' . $value, false);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
echo $response->getBody();
|
||
|
return $response;
|
||
|
}
|
||
|
}
|