44
55use Dingo \Api \Config ;
66use Illuminate \Http \Request ;
7+ use Symfony \Component \HttpKernel \Exception \BadRequestHttpException ;
78
89class 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