viewHandler = $viewHandler; } /** * A testing route for the API * * @SWG\Response( * response=200, * description="A simple route that returns a 'pong', which you can use for testing the API", * examples={"{'message': 'pong'}"} * ) * * @Rest\Get(path="/ping") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") */ public function pingAction(): Response { $view = new View(['message' => 'pong'], 200); return $this->viewHandler->handle($view); } /** * Returns information about the Kimai release * * @SWG\Response( * response=200, * description="Returns version information about the current release", * @SWG\Schema(ref=@Model(type=Version::class)) * ) * * @Rest\Get(path="/version") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") */ public function versionAction(): Response { return $this->viewHandler->handle(new View(new Version(), 200)); } /** * Returns information about installed Plugins * * @SWG\Response( * response=200, * description="Returns a list of plugin names and versions", * @SWG\Schema( * type="array", * @SWG\Items(ref=@Model(type=Plugin::class)) * ) * ) * * @Rest\Get(path="/plugins") * * @ApiSecurity(name="apiUser") * @ApiSecurity(name="apiToken") */ public function pluginAction(PluginManager $pluginManager): Response { $plugins = []; foreach ($pluginManager->getPlugins() as $plugin) { $pluginManager->loadMetadata($plugin); $plugins[] = new Plugin($plugin); } return $this->viewHandler->handle(new View($plugins, 200)); } }