Files
LaravelSkeletonAPI/app/Kernel/Http/Middleware/CheckAcceptHeader.php
2026-01-05 16:33:20 +04:00

40 lines
1019 B
PHP

<?php
declare(strict_types=1);
namespace App\Kernel\Http\Middleware;
use App\Kernel\Http\ContentType;
use App\Kernel\Http\Header;
use App\Kernel\Object\Enum;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
class CheckAcceptHeader
{
public function handle(Request $request, Closure $next): Response
{
$headerFound = false;
if ($this->acceptApplicationJson($request)) {
$headerFound = true;
}
if ($request->isMethod('OPTIONS') || $headerFound) {
return $next($request);
}
throw new NotAcceptableHttpException('Valid accept header not found');
}
private function acceptApplicationJson(Request $request): bool
{
$passedHeader = $request->headers->get(Header::Accept->value);
$expectedHeader = Enum::value(ContentType::ApplicationJson);
return $passedHeader === $expectedHeader;
}
}