Skip to content

Commit ce085c3

Browse files
committed
Allow wildcard Accepts
1 parent 57ffa86 commit ce085c3

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/JsonApi.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,17 @@ private function validateRequestAccepts(Request $request): void
110110
{
111111
$header = $request->getHeaderLine('Accept');
112112

113-
if (empty($header) || $header === '*/*') {
113+
if (empty($header)) {
114114
return;
115115
}
116116

117-
if ((new MediaTypes($header))->containsExactly(self::CONTENT_TYPE)) {
117+
$mediaTypes = new MediaTypes($header);
118+
119+
if ($mediaTypes->containsExactly('*/*')) {
120+
return;
121+
}
122+
123+
if ($mediaTypes->containsExactly(self::CONTENT_TYPE)) {
118124
return;
119125
}
120126

tests/specification/ContentNegotiationTest.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function test_json_api_content_type_is_returned()
4848
);
4949
}
5050

51-
public function test_error_when_valid_request_content_type_has_parameters()
51+
public function test_error_when_request_content_type_has_parameters()
5252
{
5353
$request = $this->buildRequest('PATCH', '/users/1')
5454
->withHeader('Content-Type', 'application/vnd.api+json;profile="http://example.com/last-modified"');
@@ -58,7 +58,7 @@ public function test_error_when_valid_request_content_type_has_parameters()
5858
$this->api->handle($request);
5959
}
6060

61-
public function test_error_when_all_valid_accepts_have_parameters()
61+
public function test_error_when_all_accepts_have_parameters()
6262
{
6363
$request = $this->buildRequest('GET', '/users/1')
6464
->withHeader('Accept', 'application/vnd.api+json;profile="http://example.com/last-modified", application/vnd.api+json;profile="http://example.com/versioning"');
@@ -77,4 +77,14 @@ public function test_success_when_only_some_accepts_have_parameters()
7777

7878
$this->assertEquals(200, $response->getStatusCode());
7979
}
80+
81+
public function test_success_when_accepts_wildcard()
82+
{
83+
$response = $this->api->handle(
84+
$this->buildRequest('GET', '/users/1')
85+
->withHeader('Accept', '*/*')
86+
);
87+
88+
$this->assertEquals(200, $response->getStatusCode());
89+
}
8090
}

0 commit comments

Comments
 (0)