From f7ad2857466b29c53a665e3b7c560df7fe6742db Mon Sep 17 00:00:00 2001 From: Ener-Getick Date: Mon, 21 Mar 2016 20:54:26 +0100 Subject: [PATCH] [Request] Fix support of custom mime types with parameters --- src/Symfony/Component/HttpFoundation/Request.php | 6 +++++- src/Symfony/Component/HttpFoundation/Tests/RequestTest.php | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/HttpFoundation/Request.php b/src/Symfony/Component/HttpFoundation/Request.php index d18fe74bac..0423323b62 100644 --- a/src/Symfony/Component/HttpFoundation/Request.php +++ b/src/Symfony/Component/HttpFoundation/Request.php @@ -1238,8 +1238,9 @@ class Request */ public function getFormat($mimeType) { + $canonicalMimeType = null; if (false !== $pos = strpos($mimeType, ';')) { - $mimeType = substr($mimeType, 0, $pos); + $canonicalMimeType = substr($mimeType, 0, $pos); } if (null === static::$formats) { @@ -1250,6 +1251,9 @@ class Request if (in_array($mimeType, (array) $mimeTypes)) { return $format; } + if (null !== $canonicalMimeType && in_array($canonicalMimeType, (array) $mimeTypes)) { + return $format; + } } } diff --git a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php index 20a2272c2f..c15c743948 100644 --- a/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php +++ b/src/Symfony/Component/HttpFoundation/Tests/RequestTest.php @@ -325,6 +325,13 @@ class RequestTest extends \PHPUnit_Framework_TestCase } } + public function testGetFormatWithCustomMimeType() + { + $request = new Request(); + $request->setFormat('custom', 'application/vnd.foo.api;myversion=2.3'); + $this->assertEquals('custom', $request->getFormat('application/vnd.foo.api;myversion=2.3')); + } + public function getFormatToMimeTypeMapProvider() { return array(