Skip to content

Commit 7a9a8fb

Browse files
committed
Throw an Exception for invalid API version
When requesting invalid API version, throw an exception which gets transformed into JSON response.
1 parent 48ae271 commit 7a9a8fb

File tree

1 file changed

+20
-20
lines changed

1 file changed

+20
-20
lines changed

src/Routing/GroupCollection.php

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Dingo\Api\Config;
66
use Illuminate\Http\Request;
7+
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
78

89
class GroupCollection
910
{
@@ -31,8 +32,7 @@ class GroupCollection
3132
/**
3233
* Create a new version collection instance.
3334
*
34-
* @param \Dingo\Api\Config $config
35-
*
35+
* @param \Dingo\Api\Config $config
3636
* @return void
3737
*/
3838
public function __construct(Config $config)
@@ -43,9 +43,8 @@ public function __construct(Config $config)
4343
/**
4444
* Add a group to the collection.
4545
*
46-
* @param string $version
47-
* @param array $options
48-
*
46+
* @param string $version
47+
* @param array $options
4948
* @return \Dingo\Api\Routing\RouteCollection
5049
*/
5150
public function add($version, array $options)
@@ -58,8 +57,7 @@ public function add($version, array $options)
5857
/**
5958
* Determine if the version exists on the collection.
6059
*
61-
* @param string $version
62-
*
60+
* @param string $version
6361
* @return bool
6462
*/
6563
public function has($version)
@@ -70,8 +68,7 @@ public function has($version)
7068
/**
7169
* Get a matching API route collection from the request.
7270
*
73-
* @param \Illuminate\Http\Request $request
74-
*
71+
* @param \Illuminate\Http\Request $request
7572
* @return \Dingo\Api\Routing\RouteCollection|null
7673
*/
7774
public function getByRequest(Request $request)
@@ -94,23 +91,28 @@ public function getDefault()
9491
/**
9592
* Get an API route collection for a given version.
9693
*
97-
* @param string $version
98-
*
94+
* @param string $version
9995
* @return \Dingo\Api\Routing\RouteCollection|null
96+
* @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
10097
*/
10198
public function getByVersion($version)
10299
{
103-
return array_first($this->groups, function ($key, $collection) use ($version) {
100+
$group = array_first($this->groups, function ($key, $collection) use ($version) {
104101
return $collection->matchesVersion($version);
105102
});
103+
104+
if (is_null($group)) {
105+
throw new BadRequestHttpException("Requested API version is invalid.");
106+
}
107+
108+
return $group;
106109
}
107110

108111
/**
109112
* Get an API route collection for a given domain and optionally a version.
110113
*
111-
* @param string $domain
112-
* @param string $version
113-
*
114+
* @param string $domain
115+
* @param string $version
114116
* @return \Dingo\Api\Routing\RouteCollection|null
115117
*/
116118
public function getByDomain($domain, $version = null)
@@ -127,9 +129,8 @@ public function getByDomain($domain, $version = null)
127129
/**
128130
* Get an aPI route collection for a given domain or a given version.
129131
*
130-
* @param string $domain
131-
* @param string $version
132-
*
132+
* @param string $domain
133+
* @param string $version
133134
* @return \Dingo\Api\Routing\RouteCollection|null
134135
*/
135136
public function getByDomainOrVersion($domain, $version)
@@ -144,8 +145,7 @@ public function getByDomainOrVersion($domain, $version)
144145
/**
145146
* Get an API route collection for a given array of options.
146147
*
147-
* @param array $options
148-
*
148+
* @param array $options
149149
* @return array
150150
*/
151151
public function getByOptions($options)

0 commit comments

Comments
 (0)