src/RequestWithAttribute.php
<?php
declare(strict_types=1);
namespace PTS\PSR15\Middlewares;
use InvalidArgumentException;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class RequestWithAttribute implements MiddlewareInterface
{
protected array $attributes = [];
public function __construct(array $attributes = [])
{
$this->attributes = $attributes;
}
/**
* @param ServerRequestInterface $request
* @param RequestHandlerInterface $handler
*
* @return ResponseInterface
*
* @throws InvalidArgumentException
*/
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
$request = $this->withAttributes($request, $this->attributes);
return $handler->handle($request);
}
protected function withAttributes(ServerRequestInterface $request, array $attributes): ServerRequestInterface
{
foreach ($attributes as $name => $attribute) {
$request = $request->withAttribute($name, $attribute);
}
return $request;
}
}