X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2FWallabag%2FApiBundle%2FController%2FEntryRestController.php;fp=src%2FWallabag%2FApiBundle%2FController%2FEntryRestController.php;h=9786c4d37ee37a6eecd6387fb2b2b59ae4ad3ba6;hb=39ffaba3232b6378f47883615c58a9ffba668af3;hp=793b91ba399e42f2c60516d912d493912add020e;hpb=18696f77fdc76f7055d84460d459051a6bb7253a;p=github%2Fwallabag%2Fwallabag.git 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; use Hateoas\Configuration\Route; use Hateoas\Representation\Factory\PagerfantaFactory; +use JMS\Serializer\SerializationContext; use Nelmio\ApiDocBundle\Annotation\ApiDoc; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpFoundation\Request; @@ -21,6 +22,8 @@ class EntryRestController extends WallabagRestController * Return ID if entry(ies) exist (and if you give the return_id parameter). * Otherwise it returns false. * + * @todo Remove that `return_id` in the next major release + * * @ApiDoc( * parameters={ * {"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 ->getRepository('WallabagCoreBundle:Entry') ->findByUrlAndUserId($url, $this->getUser()->getId()); - $results[$url] = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false; + $results[$url] = $this->returnExistInformation($res, $returnId); } return $this->sendResponse($results); @@ -63,7 +66,7 @@ class EntryRestController extends WallabagRestController ->getRepository('WallabagCoreBundle:Entry') ->findByUrlAndUserId($url, $this->getUser()->getId()); - $exists = $res instanceof Entry ? ($returnId ? $res->getId() : true) : false; + $exists = $this->returnExistInformation($res, $returnId); return $this->sendResponse(['exists' => $exists]); } @@ -621,7 +624,11 @@ class EntryRestController extends WallabagRestController */ private function sendResponse($data) { - $json = $this->get('serializer')->serialize($data, 'json'); + // https://github.com/schmittjoh/JMSSerializerBundle/issues/293 + $context = new SerializationContext(); + $context->setSerializeNull(true); + + $json = $this->get('serializer')->serialize($data, 'json', $context); return (new JsonResponse())->setJson($json); } @@ -698,4 +705,21 @@ class EntryRestController extends WallabagRestController // entry saved, dispatch event about it! $this->get('event_dispatcher')->dispatch(EntrySavedEvent::NAME, new EntrySavedEvent($entry)); } + + /** + * Return information about the entry if it exist and depending on the id or not. + * + * @param Entry|null $entry + * @param bool $returnId + * + * @return bool|int + */ + private function returnExistInformation($entry, $returnId) + { + if ($returnId) { + return $entry instanceof Entry ? $entry->getId() : null; + } + + return $entry instanceof Entry ? true : false; + } }