12
12
namespace Tobyz \JsonApiServer ;
13
13
14
14
use HttpAccept \AcceptParser ;
15
+ use HttpAccept \ContentTypeParser ;
16
+ use InvalidArgumentException ;
15
17
use JsonApiPhp \JsonApi \ErrorDocument ;
16
18
use Psr \Http \Message \ResponseInterface as Response ;
17
19
use Psr \Http \Message \ServerRequestInterface as Request ;
@@ -224,26 +226,21 @@ private function getContentTypeExtensionUris(Request $request): array
224
226
return [];
225
227
}
226
228
227
- $ mediaList = ( new AcceptParser ())-> parse ( $ contentType );
228
-
229
- if ( $ mediaList -> count () > 1 ) {
229
+ try {
230
+ $ type = ( new ContentTypeParser ())-> parse ( $ contentType );
231
+ } catch ( InvalidArgumentException $ exc ) {
230
232
throw new UnsupportedMediaTypeException ();
231
233
}
232
234
233
- $ mediaType = $ mediaList ->preferredMedia (0 );
234
-
235
- if ($ mediaType ->mimetype () !== JsonApi::MEDIA_TYPE ) {
235
+ if ($ type ->name () !== JsonApi::MEDIA_TYPE ) {
236
236
throw new UnsupportedMediaTypeException ();
237
237
}
238
238
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 ' ]))) {
242
240
throw new UnsupportedMediaTypeException ();
243
241
}
244
242
245
- $ extensionUris = $ parameters ->has ('ext ' ) ? explode (' ' , $ parameters ->get ('ext ' )) : [];
246
-
243
+ $ extensionUris = $ type ->hasParamater ('ext ' ) ? explode (' ' , $ type ->getParameter ('ext ' )) : [];
247
244
if (! empty (array_diff ($ extensionUris , array_keys ($ this ->extensions )))) {
248
245
throw new UnsupportedMediaTypeException ();
249
246
}
@@ -257,21 +254,17 @@ private function getAcceptableExtensionUris(Request $request): array
257
254
return [];
258
255
}
259
256
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 , '*/* ' ])) {
264
260
continue ;
265
261
}
266
262
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 ' ]))) {
270
264
continue ;
271
265
}
272
266
273
- $ extensionUris = $ parameters ->has ('ext ' ) ? explode (' ' , $ parameters ->get ('ext ' )) : [];
274
-
267
+ $ extensionUris = $ mediaType ->hasParamater ('ext ' ) ? explode (' ' , $ mediaType ->getParameter ('ext ' )) : [];
275
268
if (! empty (array_diff ($ extensionUris , array_keys ($ this ->extensions )))) {
276
269
continue ;
277
270
}
0 commit comments