Return an explicit error if reload fail

This commit is contained in:
Jeremy Benoist 2016-11-20 16:25:13 +01:00
parent 70584b42aa
commit 56da73969a
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 8 additions and 7 deletions

View file

@ -287,7 +287,7 @@ class EntryRestController extends WallabagRestController
/**
* Reload an entry.
* An empty response with HTTP Status 304 will be send if we weren't able to update the content (because it hasn't changed or we got an error).
* A response with HTTP Status 400 will be return if we weren't able to update the content (because it hasn't changed or we got an error).
*
* @ApiDoc(
* requirements={
@ -302,9 +302,6 @@ class EntryRestController extends WallabagRestController
$this->validateAuthentication();
$this->validateUserAccess($entry->getUser()->getId());
// put default title in case of fetching content failed
$entry->setTitle('No title found');
try {
$entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl());
} catch (\Exception $e) {
@ -313,12 +310,12 @@ class EntryRestController extends WallabagRestController
'entry' => $entry,
]);
return new JsonResponse([], 304);
return new JsonResponse(['error' => 'Error while trying to fetch content'], 400);
}
// if refreshing entry failed, don't save it
if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) {
return new JsonResponse([], 304);
return new JsonResponse(['error' => 'Error while trying to extract content'], 400);
}
$em = $this->getDoctrine()->getManager();

View file

@ -690,7 +690,11 @@ class EntryRestControllerTest extends WallabagApiTestCase
}
$this->client->request('PATCH', '/api/entries/'.$entry->getId().'/reload.json');
$this->assertEquals(304, $this->client->getResponse()->getStatusCode());
$this->assertEquals(400, $this->client->getResponse()->getStatusCode());
$this->assertContains('Error while trying to extract content', $this->client->getResponse()->getContent());
$this->assertEquals('application/json', $this->client->getResponse()->headers->get('Content-Type'));
}
public function testReloadEntry()