diff options
author | Jeremy Benoist <jeremy.benoist@gmail.com> | 2016-11-20 13:08:41 +0100 |
---|---|---|
committer | Jeremy Benoist <jeremy.benoist@gmail.com> | 2016-11-20 13:08:41 +0100 |
commit | 0a6f4568b5e4f6291cc19cbea929ed1ebeca3a54 (patch) | |
tree | 26e9852f4b38d44b63a67216921c2a25feadd095 /src | |
parent | 5ae8788583a63973c89a5a83f1a6880ce04b49d7 (diff) | |
download | wallabag-0a6f4568b5e4f6291cc19cbea929ed1ebeca3a54.tar.gz wallabag-0a6f4568b5e4f6291cc19cbea929ed1ebeca3a54.tar.zst wallabag-0a6f4568b5e4f6291cc19cbea929ed1ebeca3a54.zip |
Add ability to reload entry from API
Diffstat (limited to 'src')
-rw-r--r-- | src/Wallabag/ApiBundle/Controller/EntryRestController.php | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index c5bf1df8..3303d47b 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php | |||
@@ -286,6 +286,54 @@ class EntryRestController extends WallabagRestController | |||
286 | } | 286 | } |
287 | 287 | ||
288 | /** | 288 | /** |
289 | * Reload an entry. | ||
290 | * 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) | ||
291 | * | ||
292 | * @ApiDoc( | ||
293 | * requirements={ | ||
294 | * {"name"="entry", "dataType"="integer", "requirement"="\w+", "description"="The entry ID"} | ||
295 | * } | ||
296 | * ) | ||
297 | * | ||
298 | * @return JsonResponse | ||
299 | */ | ||
300 | public function patchEntriesReloadAction(Entry $entry) | ||
301 | { | ||
302 | $this->validateAuthentication(); | ||
303 | $this->validateUserAccess($entry->getUser()->getId()); | ||
304 | |||
305 | // put default title in case of fetching content failed | ||
306 | $entry->setTitle('No title found'); | ||
307 | |||
308 | try { | ||
309 | $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); | ||
310 | } catch (\Exception $e) { | ||
311 | $this->get('logger')->error('Error while saving an entry', [ | ||
312 | 'exception' => $e, | ||
313 | 'entry' => $entry, | ||
314 | ]); | ||
315 | |||
316 | return new JsonResponse([], 304); | ||
317 | } | ||
318 | |||
319 | // if refreshing entry failed, don't save it | ||
320 | if ($this->getParameter('wallabag_core.fetching_error_message') === $entry->getContent()) { | ||
321 | return new JsonResponse([], 304); | ||
322 | } | ||
323 | |||
324 | $em = $this->getDoctrine()->getManager(); | ||
325 | $em->persist($entry); | ||
326 | $em->flush(); | ||
327 | |||
328 | // entry saved, dispatch event about it! | ||
329 | $this->get('event_dispatcher')->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry)); | ||
330 | |||
331 | $json = $this->get('serializer')->serialize($entry, 'json'); | ||
332 | |||
333 | return (new JsonResponse())->setJson($json); | ||
334 | } | ||
335 | |||
336 | /** | ||
289 | * Delete **permanently** an entry. | 337 | * Delete **permanently** an entry. |
290 | * | 338 | * |
291 | * @ApiDoc( | 339 | * @ApiDoc( |