/** * @param HeaderParametersInterface $parameters * * @return void */ protected function checkContentTypeHeader(HeaderParametersInterface $parameters) { // Do not allow specify more than 1 media type for input data. Otherwise which one is correct? if (count($parameters->getContentTypeHeader()->getMediaTypes()) > 1) { throw new E([], E::HTTP_CODE_BAD_REQUEST); } $this->codecMatcher->matchDecoder($parameters->getContentTypeHeader()); // From spec: Servers MUST respond with a 415 Unsupported Media Type status code // if a request specifies the header Content-Type: application/vnd.api+json with // any media type parameters. // We return 415 if no match found for decoder (media type with or wo parameters) // If no decoders were configured for media types with parameters we return 415 anyway if ($this->codecMatcher->getDecoderHeaderMatchedType() === null) { throw new E([], E::HTTP_CODE_UNSUPPORTED_MEDIA_TYPE); } }
/** * @inheritdoc */ public function checkHeaders(HeaderParametersInterface $parameters) { $this->checkContentTypeHeader($parameters->getContentTypeHeader()); $this->checkAcceptHeader($parameters->getAcceptHeader()); }