feature #26036 Added support for getting default values in Accept headers (javiereguiluz)
This PR was squashed before being merged into the 4.1-dev branch (closes #26036).
Discussion
----------
Added support for getting default values in Accept headers
| Q | A
| ------------- | ---
| Branch? | master
| Bug fix? | no
| New feature? | yes
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | #25877
| License | MIT
| Doc PR | -
Commits
-------
7e31fd94df
Added support for getting default values in Accept headers
This commit is contained in:
commit
c557327d54
@ -91,7 +91,7 @@ class AcceptHeader
|
|||||||
*/
|
*/
|
||||||
public function get($value)
|
public function get($value)
|
||||||
{
|
{
|
||||||
return isset($this->items[$value]) ? $this->items[$value] : null;
|
return $this->items[$value] ?? $this->items[explode('/', $value)[0].'/*'] ?? $this->items['*/*'] ?? $this->items['*'] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -10,6 +10,10 @@ CHANGELOG
|
|||||||
* The `getClientSize()` method of the `UploadedFile` class is deprecated. Use `getSize()` instead.
|
* The `getClientSize()` method of the `UploadedFile` class is deprecated. Use `getSize()` instead.
|
||||||
* added `RedisSessionHandler` to use Redis as a session storage
|
* added `RedisSessionHandler` to use Redis as a session storage
|
||||||
|
|
||||||
|
* The `get()` method of the `AcceptHeader` class now takes into account the
|
||||||
|
`*` and `*/*` default values (if they are present in the Accept HTTP header)
|
||||||
|
when looking for items.
|
||||||
|
|
||||||
4.0.0
|
4.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -100,4 +100,31 @@ class AcceptHeaderTest extends TestCase
|
|||||||
'order matters when q is equal2' => array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')),
|
'order matters when q is equal2' => array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideDefaultValueData
|
||||||
|
*/
|
||||||
|
public function testDefaultValue($acceptHeader, $value, $expectedQuality)
|
||||||
|
{
|
||||||
|
$header = AcceptHeader::fromString($acceptHeader);
|
||||||
|
$this->assertSame($expectedQuality, $header->get($value)->getQuality());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function provideDefaultValueData()
|
||||||
|
{
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, *;q=0.3', 'text/xml', 0.3);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/xml', 0.3);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/html', 1.0);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', 'text/plain', 0.5);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*;q=0.3', '*', 0.3);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', '*', 1.0);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/xml', 1.0);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/x-dvi;q=0.8, */*', 'text/*', 1.0);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/*', 0.8);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/html', 1.0);
|
||||||
|
yield array('text/plain;q=0.5, text/html, text/*;q=0.8, */*', 'text/x-dvi', 0.8);
|
||||||
|
yield array('*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', '*', 0.3);
|
||||||
|
yield array('*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'utf-8', 0.7);
|
||||||
|
yield array('*;q=0.3, ISO-8859-1;q=0.7, utf-8;q=0.7', 'SHIFT_JIS', 0.3);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user