Fix dependency on `http-accept` now that a version has been tagged

This commit is contained in:
Toby Zerner 2021-09-03 09:49:23 +10:00
parent 6183f012f6
commit 3f63e2db31
2 changed files with 8 additions and 17 deletions

View File

@ -9,7 +9,7 @@
"nyholm/psr7": "^1.3",
"psr/http-message": "^1.0",
"psr/http-server-handler": "^1.0",
"xynha/http-accept": "dev-master#b712d4ae64ca53fa835667fda73605ae16cddcbb"
"hnet/http-accept": "^0.1"
},
"license": "MIT",
"authors": [

View File

@ -11,6 +11,7 @@
namespace Tobyz\JsonApiServer;
use HttpAccept\AcceptParser;
use JsonApiPhp\JsonApi\ErrorDocument;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
@ -26,7 +27,6 @@ use Tobyz\JsonApiServer\Exception\ResourceNotFoundException;
use Tobyz\JsonApiServer\Exception\UnsupportedMediaTypeException;
use Tobyz\JsonApiServer\Extension\Extension;
use Tobyz\JsonApiServer\Schema\Concerns\HasMeta;
use Xynha\HttpAccept\AcceptParser;
final class JsonApi implements RequestHandlerInterface
{
@ -236,13 +236,13 @@ final class JsonApi implements RequestHandlerInterface
throw new UnsupportedMediaTypeException();
}
$parameters = $this->parseParameters($mediaType->parameters());
$parameters = $mediaType->parameter();
if (! empty(array_diff(array_keys($parameters), ['ext', 'profile']))) {
if (! empty(array_diff(array_keys($parameters->all()), ['ext', 'profile']))) {
throw new UnsupportedMediaTypeException();
}
$extensionUris = isset($parameters['ext']) ? explode(' ', $parameters['ext']) : [];
$extensionUris = $parameters->has('ext') ? explode(' ', $parameters->get('ext')) : [];
if (! empty(array_diff($extensionUris, array_keys($this->extensions)))) {
throw new UnsupportedMediaTypeException();
@ -264,13 +264,13 @@ final class JsonApi implements RequestHandlerInterface
continue;
}
$parameters = $this->parseParameters($mediaType->parameters());
$parameters = $mediaType->parameter();
if (! empty(array_diff(array_keys($parameters), ['ext', 'profile']))) {
if (! empty(array_diff(array_keys($parameters->all()), ['ext', 'profile']))) {
continue;
}
$extensionUris = isset($parameters['ext']) ? explode(' ', $parameters['ext']) : [];
$extensionUris = $parameters->has('ext') ? explode(' ', $parameters->get('ext')) : [];
if (! empty(array_diff($extensionUris, array_keys($this->extensions)))) {
continue;
@ -282,15 +282,6 @@ final class JsonApi implements RequestHandlerInterface
throw new NotAcceptableException();
}
private function parseParameters(array $parameters): array
{
return array_reduce($parameters, function ($a, $v) {
$parts = explode('=', $v, 2);
$a[$parts[0]] = trim($parts[1], '"');
return $a;
}, []);
}
/**
* Convert an exception into a JSON:API error document response.
*