Skip to content

Commit 2063169

Browse files
committed
Upgrade http-accept library
1 parent 812ccd8 commit 2063169

File tree

2 files changed

+16
-23
lines changed

2 files changed

+16
-23
lines changed

composer.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22
"name": "tobyz/json-api-server",
33
"description": "A fully automated JSON:API server implementation in PHP.",
44
"require": {
5-
"php": ">=7.1",
5+
"php": ">=7.3",
66
"ext-json": "*",
7+
"asispts/http-accept": "^1.0",
78
"doctrine/inflector": "^1.4 || ^2.0",
89
"json-api-php/json-api": "^2.2",
910
"nyholm/psr7": "^1.3",
1011
"psr/http-message": "^1.0",
11-
"psr/http-server-handler": "^1.0",
12-
"hnet/http-accept": "^0.1"
12+
"psr/http-server-handler": "^1.0"
1313
},
1414
"license": "MIT",
1515
"authors": [

src/JsonApi.php

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
namespace Tobyz\JsonApiServer;
1313

1414
use HttpAccept\AcceptParser;
15+
use HttpAccept\ContentTypeParser;
16+
use InvalidArgumentException;
1517
use JsonApiPhp\JsonApi\ErrorDocument;
1618
use Psr\Http\Message\ResponseInterface as Response;
1719
use Psr\Http\Message\ServerRequestInterface as Request;
@@ -224,26 +226,21 @@ private function getContentTypeExtensionUris(Request $request): array
224226
return [];
225227
}
226228

227-
$mediaList = (new AcceptParser())->parse($contentType);
228-
229-
if ($mediaList->count() > 1) {
229+
try {
230+
$type = (new ContentTypeParser())->parse($contentType);
231+
} catch(InvalidArgumentException $exc){
230232
throw new UnsupportedMediaTypeException();
231233
}
232234

233-
$mediaType = $mediaList->preferredMedia(0);
234-
235-
if ($mediaType->mimetype() !== JsonApi::MEDIA_TYPE) {
235+
if ($type->name() !== JsonApi::MEDIA_TYPE) {
236236
throw new UnsupportedMediaTypeException();
237237
}
238238

239-
$parameters = $mediaType->parameter();
240-
241-
if (! empty(array_diff(array_keys($parameters->all()), ['ext', 'profile']))) {
239+
if (! empty(array_diff(array_keys($type->parameters()), ['ext', 'profile']))) {
242240
throw new UnsupportedMediaTypeException();
243241
}
244242

245-
$extensionUris = $parameters->has('ext') ? explode(' ', $parameters->get('ext')) : [];
246-
243+
$extensionUris = $type->hasParamater('ext') ? explode(' ', $type->getParameter('ext')) : [];
247244
if (! empty(array_diff($extensionUris, array_keys($this->extensions)))) {
248245
throw new UnsupportedMediaTypeException();
249246
}
@@ -257,21 +254,17 @@ private function getAcceptableExtensionUris(Request $request): array
257254
return [];
258255
}
259256

260-
$mediaList = (new AcceptParser())->parse($accept);
261-
262-
foreach ($mediaList->all() as $mediaType) {
263-
if (! in_array($mediaType->mimetype(), [JsonApi::MEDIA_TYPE, '*/*'])) {
257+
$list = (new AcceptParser())->parse($accept);
258+
foreach($list as $mediaType) {
259+
if (!in_array($mediaType->name(), [JsonApi::MEDIA_TYPE, '*/*'])) {
264260
continue;
265261
}
266262

267-
$parameters = $mediaType->parameter();
268-
269-
if (! empty(array_diff(array_keys($parameters->all()), ['ext', 'profile']))) {
263+
if (!empty(array_diff(array_keys($mediaType->parameters()), ['ext', 'profile']))) {
270264
continue;
271265
}
272266

273-
$extensionUris = $parameters->has('ext') ? explode(' ', $parameters->get('ext')) : [];
274-
267+
$extensionUris = $mediaType->hasParamater('ext') ? explode(' ', $mediaType->getParameter('ext')) : [];
275268
if (! empty(array_diff($extensionUris, array_keys($this->extensions)))) {
276269
continue;
277270
}

0 commit comments

Comments
 (0)