mirror of
https://github.com/wallabag/wallabag.git
synced 2025-01-10 17:05:26 +00:00
Added limit
This commit is contained in:
parent
7fa844a349
commit
efd351c98f
5 changed files with 37 additions and 0 deletions
|
@ -55,6 +55,7 @@ wallabag_core:
|
||||||
list_mode: 0
|
list_mode: 0
|
||||||
fetching_error_message: |
|
fetching_error_message: |
|
||||||
wallabag can't retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
|
wallabag can't retrieve contents for this article. Please <a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html#how-can-i-help-to-fix-that">troubleshoot this issue</a>.
|
||||||
|
api_limit_mass_actions: 10
|
||||||
|
|
||||||
wallabag_user:
|
wallabag_user:
|
||||||
registration_enabled: "%fosuser_registration%"
|
registration_enabled: "%fosuser_registration%"
|
||||||
|
|
|
@ -5,6 +5,7 @@ namespace Wallabag\ApiBundle\Controller;
|
||||||
use Hateoas\Configuration\Route;
|
use Hateoas\Configuration\Route;
|
||||||
use Hateoas\Representation\Factory\PagerfantaFactory;
|
use Hateoas\Representation\Factory\PagerfantaFactory;
|
||||||
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
use Nelmio\ApiDocBundle\Annotation\ApiDoc;
|
||||||
|
use Symfony\Component\Config\Definition\Exception\Exception;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
@ -229,6 +230,8 @@ class EntryRestController extends WallabagRestController
|
||||||
* )
|
* )
|
||||||
*
|
*
|
||||||
* @return JsonResponse
|
* @return JsonResponse
|
||||||
|
*
|
||||||
|
* @throws Symfony\Component\Config\Definition\Exception\Exception When limit is reached
|
||||||
*/
|
*/
|
||||||
public function postEntriesListAction(Request $request)
|
public function postEntriesListAction(Request $request)
|
||||||
{
|
{
|
||||||
|
@ -237,6 +240,12 @@ class EntryRestController extends WallabagRestController
|
||||||
$urls = json_decode($request->query->get('urls', []));
|
$urls = json_decode($request->query->get('urls', []));
|
||||||
$results = [];
|
$results = [];
|
||||||
|
|
||||||
|
$limit = $this->container->getParameter('wallabag_core.api_limit_mass_actions');
|
||||||
|
|
||||||
|
if (count($urls) > $limit) {
|
||||||
|
throw new Exception('API limit reached');
|
||||||
|
}
|
||||||
|
|
||||||
// handle multiple urls
|
// handle multiple urls
|
||||||
if (!empty($urls)) {
|
if (!empty($urls)) {
|
||||||
foreach ($urls as $key => $url) {
|
foreach ($urls as $key => $url) {
|
||||||
|
|
|
@ -47,6 +47,9 @@ class Configuration implements ConfigurationInterface
|
||||||
->scalarNode('list_mode')
|
->scalarNode('list_mode')
|
||||||
->defaultValue(1)
|
->defaultValue(1)
|
||||||
->end()
|
->end()
|
||||||
|
->scalarNode('api_limit_mass_actions')
|
||||||
|
->defaultValue(10)
|
||||||
|
->end()
|
||||||
->end()
|
->end()
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ class WallabagCoreExtension extends Extension
|
||||||
$container->setParameter('wallabag_core.action_mark_as_read', $config['action_mark_as_read']);
|
$container->setParameter('wallabag_core.action_mark_as_read', $config['action_mark_as_read']);
|
||||||
$container->setParameter('wallabag_core.list_mode', $config['list_mode']);
|
$container->setParameter('wallabag_core.list_mode', $config['list_mode']);
|
||||||
$container->setParameter('wallabag_core.fetching_error_message', $config['fetching_error_message']);
|
$container->setParameter('wallabag_core.fetching_error_message', $config['fetching_error_message']);
|
||||||
|
$container->setParameter('wallabag_core.api_limit_mass_actions', $config['api_limit_mass_actions']);
|
||||||
|
|
||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
|
||||||
$loader->load('services.yml');
|
$loader->load('services.yml');
|
||||||
|
|
|
@ -809,4 +809,27 @@ class EntryRestControllerTest extends WallabagApiTestCase
|
||||||
$this->assertFalse($content[1]['entry']);
|
$this->assertFalse($content[1]['entry']);
|
||||||
$this->assertEquals('http://0.0.0.0/entry3', $content[1]['url']);
|
$this->assertEquals('http://0.0.0.0/entry3', $content[1]['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException Symfony\Component\Config\Definition\Exception\Exception
|
||||||
|
* @expectedExceptionMessage API limit reached
|
||||||
|
*/
|
||||||
|
public function testLimitBulkAction()
|
||||||
|
{
|
||||||
|
$list = [
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
'http://0.0.0.0/entry1',
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->client->request('POST', '/api/entries/lists?urls='.json_encode($list));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue