diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Wallabag/ApiBundle/Controller/EntryRestController.php | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/EntryRestController.php b/src/Wallabag/ApiBundle/Controller/EntryRestController.php index 793b91ba..9786c4d3 100644 --- a/src/Wallabag/ApiBundle/Controller/EntryRestController.php +++ b/src/Wallabag/ApiBundle/Controller/EntryRestController.php | |||
@@ -4,6 +4,7 @@ namespace Wallabag\ApiBundle\Controller; | |||
4 | 4 | ||
5 | use Hateoas\Configuration\Route; | 5 | use Hateoas\Configuration\Route; |
6 | use Hateoas\Representation\Factory\PagerfantaFactory; | 6 | use Hateoas\Representation\Factory\PagerfantaFactory; |
7 | use JMS\Serializer\SerializationContext; | ||
7 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; | 8 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; |
8 | use Symfony\Component\HttpKernel\Exception\HttpException; | 9 | use Symfony\Component\HttpKernel\Exception\HttpException; |
9 | use Symfony\Component\HttpFoundation\Request; | 10 | use Symfony\Component\HttpFoundation\Request; |
@@ -21,6 +22,8 @@ class EntryRestController extends WallabagRestController | |||
21 | * Return ID if entry(ies) exist (and if you give the return_id parameter). | 22 | * Return ID if entry(ies) exist (and if you give the return_id parameter). |
22 | * Otherwise it returns false. | 23 | * Otherwise it returns false. |
23 | * | 24 | * |
25 | * @todo Remove that `return_id` in the next major release | ||
26 | * | ||
24 | * @ApiDoc( | 27 | * @ApiDoc( |
25 | * parameters={ | 28 | * parameters={ |
26 | * {"name"="return_id", "dataType"="string", "required"=false, "format"="1 or 0", "description"="Set 1 if you want to retrieve ID in case entry(ies) exists, 0 by default"}, | 29 | * {"name"="return_id", "dataType"="string", "required"=false, "format"="1 or 0", "description"="Set 1 if you want to retrieve ID in case entry(ies) exists, 0 by default"}, |
@@ -46,7 +49,7 @@ class EntryRestController extends WallabagRestController | |||
46 | ->getRepository('WallabagCoreBundle:Entry') | 49 | ->getRepository('WallabagCoreBundle:Entry') |
47 | ->findByUrlAndUserId($url, $this->getUser()->getId()); | 50 | ->findByUrlAndUserId($url, $this->getUser()->getId()); |
48 | 51 | ||
49 | $results[$url] = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false; | 52 | $results[$url] = $this->returnExistInformation($res, $returnId); |
50 | } | 53 | } |
51 | 54 | ||
52 | return $this->sendResponse($results); | 55 | return $this->sendResponse($results); |
@@ -63,7 +66,7 @@ class EntryRestController extends WallabagRestController | |||
63 | ->getRepository('WallabagCoreBundle:Entry') | 66 | ->getRepository('WallabagCoreBundle:Entry') |
64 | ->findByUrlAndUserId($url, $this->getUser()->getId()); | 67 | ->findByUrlAndUserId($url, $this->getUser()->getId()); |
65 | 68 | ||
66 | $exists = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false; | 69 | $exists = $this->returnExistInformation($res, $returnId); |
67 | 70 | ||
68 | return $this->sendResponse(['exists' => $exists]); | 71 | return $this->sendResponse(['exists' => $exists]); |
69 | } | 72 | } |
@@ -621,7 +624,11 @@ class EntryRestController extends WallabagRestController | |||
621 | */ | 624 | */ |
622 | private function sendResponse($data) | 625 | private function sendResponse($data) |
623 | { | 626 | { |
624 | $json = $this->get('serializer')->serialize($data, 'json'); | 627 | // https://github.com/schmittjoh/JMSSerializerBundle/issues/293 |
628 | $context = new SerializationContext(); | ||
629 | $context->setSerializeNull(true); | ||
630 | |||
631 | $json = $this->get('serializer')->serialize($data, 'json', $context); | ||
625 | 632 | ||
626 | return (new JsonResponse())->setJson($json); | 633 | return (new JsonResponse())->setJson($json); |
627 | } | 634 | } |
@@ -698,4 +705,21 @@ class EntryRestController extends WallabagRestController | |||
698 | // entry saved, dispatch event about it! | 705 | // entry saved, dispatch event about it! |
699 | $this->get('event_dispatcher')->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry)); | 706 | $this->get('event_dispatcher')->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry)); |
700 | } | 707 | } |
708 | |||
709 | /** | ||
710 | * Return information about the entry if it exist and depending on the id or not. | ||
711 | * | ||
712 | * @param Entry|null $entry | ||
713 | * @param bool $returnId | ||
714 | * | ||
715 | * @return bool|int | ||
716 | */ | ||
717 | private function returnExistInformation($entry, $returnId) | ||
718 | { | ||
719 | if ($returnId) { | ||
720 | return $entry instanceof Entry ? $entry->getId() : null; | ||
721 | } | ||
722 | |||
723 | return $entry instanceof Entry ? true : false; | ||
724 | } | ||
701 | } | 725 | } |