Phred/src/Http/Support/DefaultErrorFormatNegotiator.php
2025-12-22 16:04:15 -06:00

24 lines
761 B
PHP

<?php
declare(strict_types=1);
namespace Phred\Http\Support;
use Phred\Http\Contracts\ErrorFormatNegotiatorInterface;
use Psr\Http\Message\ServerRequestInterface as ServerRequest;
final class DefaultErrorFormatNegotiator implements ErrorFormatNegotiatorInterface
{
public function apiFormat(ServerRequest $request): string
{
$accept = $request->getHeaderLine('Accept');
return str_contains($accept, 'application/vnd.api+json') ? 'jsonapi' : 'rest';
}
public function wantsHtml(ServerRequest $request): bool
{
$accept = $request->getHeaderLine('Accept');
// Only return true if text/html is explicitly mentioned and is likely the preferred format
return str_contains($accept, 'text/html');
}
}