protected function initializeAPI($app, $request)
{
$queryString = trim($request->getRequestUri(), '/');
$chunks = explode('/', $queryString);
$apiVersion = array_key_exists(1, $chunks) ? $chunks[1] : 'v1';
$apiVersion = strtok($apiVersion, '?');
$apiClass = 'Api\\' . SpoonFilter::ucfirst($apiVersion) . '\\Init';
// validate
if (!class_exists($apiClass)) {
throw new Exception('This version of the API does not exist.');
}
$init = new $apiClass($this->container->get('kernel'));
$init->initialize($app);
// The client was requested
if (array_key_exists(2, $chunks) && $chunks[2] === 'client') {
$applicationClass = 'Api\\' . SpoonFilter::ucfirst($apiVersion) . '\\Engine\\Client';
} else {
// The regular API was requested
$applicationClass = 'Api\\' . SpoonFilter::ucfirst($apiVersion) . '\\Engine\\Api';
}
return $applicationClass;
}