Useful for api client which required some information.
We might add more inside them in the future.
The endpoint /api/version should be avoided now as it contains not so much information rather the version.
target: /
access_control:
- - { path: ^/api/doc, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- - { path: ^/api/version, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- - { path: ^/api/user, roles: IS_AUTHENTICATED_ANONYMOUSLY }
+ - { path: ^/api/(doc|version|info|user), roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
*
* @ApiDoc()
*
+ * @deprecated Should use info endpoint instead
+ *
* @return JsonResponse
*/
public function getVersionAction()
return (new JsonResponse())->setJson($json);
}
+ /**
+ * Retrieve information about the wallabag instance.
+ *
+ * @ApiDoc()
+ *
+ * @return JsonResponse
+ */
+ public function getInfoAction()
+ {
+ $info = [
+ 'appname' => 'wallabag',
+ 'version' => $this->container->getParameter('wallabag_core.version'),
+ 'allowed_registration' => $this->container->getParameter('wallabag_user.registration_enabled'),
+ ];
+
+ return (new JsonResponse())->setJson($this->get('jms_serializer')->serialize($info, 'json'));
+ }
+
protected function validateAuthentication()
{
if (false === $this->get('security.authorization_checker')->isGranted('IS_AUTHENTICATED_FULLY')) {
$this->assertSame($client->getContainer()->getParameter('wallabag_core.version'), $content);
}
+
+ public function testGetInfo()
+ {
+ // create a new client instead of using $this->client to be sure client isn't authenticated
+ $client = static::createClient();
+ $client->request('GET', '/api/info');
+
+ $this->assertSame(200, $client->getResponse()->getStatusCode());
+
+ $content = json_decode($client->getResponse()->getContent(), true);
+
+ $this->assertArrayHasKey('appname', $content);
+ $this->assertArrayHasKey('version', $content);
+ $this->assertArrayHasKey('allowed_registration', $content);
+
+ $this->assertSame('wallabag', $content['appname']);
+ }
}