for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* This file is part of coisa/http.
*
* (c) Felipe Sayão Lobato Abreu <[email protected]>
* This source file is subject to the license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace CoiSA\Http\Middleware;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
* Class SendHeadersMiddleware
* @package CoiSA\Http\Middleware
final class SendHeadersMiddleware implements MiddlewareInterface
{
* {@inheritdoc}
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
\ob_start();
$response = $handler->handle($request);
foreach ($response->getHeaders() as $header => $values) {
$name = $this->normalize($header);
foreach ($values as $value) {
\header(
\sprintf('%s: %s', $name, $value),
true,
$response->getStatusCode()
);
}
\ob_get_flush();
return $response;
* @param string $name
* @return string
private function normalize(string $name): string
$name = \str_replace('-', ' ', $name);
$name = \ucwords($name);
return \str_replace(' ', '-', $name);