]> git.immae.eu Git - github/shaarli/Shaarli.git/blobdiff - application/api/controllers/Links.php
REST API: implements getLink by ID service
[github/shaarli/Shaarli.git] / application / api / controllers / Links.php
index 0a7968e3916c2168c6785de0ad4bdc0867f4e850..d4f1a09c8529cd53a019ef759f73e850fa8250aa 100644 (file)
@@ -4,6 +4,7 @@ namespace Shaarli\Api\Controllers;
 
 use Shaarli\Api\ApiUtils;
 use Shaarli\Api\Exceptions\ApiBadParametersException;
+use Shaarli\Api\Exceptions\ApiLinkNotFoundException;
 use Slim\Http\Request;
 use Slim\Http\Response;
 
@@ -58,8 +59,7 @@ class Links extends ApiController
         $limit = $request->getParam('limit');
         if (empty($limit)) {
             $limit = self::$DEFAULT_LIMIT;
-        }
-        else if (ctype_digit($limit)) {
+        } else if (ctype_digit($limit)) {
             $limit = intval($limit);
         } else if ($limit === 'all') {
             $limit = count($links);
@@ -83,4 +83,25 @@ class Links extends ApiController
 
         return $response->withJson($out, 200, $this->jsonStyle);
     }
+
+    /**
+     * Return a single formatted link by its ID.
+     *
+     * @param Request  $request  Slim request.
+     * @param Response $response Slim response.
+     * @param array    $args     Path parameters. including the ID.
+     *
+     * @return Response containing the link array.
+     *
+     * @throws ApiLinkNotFoundException generating a 404 error.
+     */
+    public function getLink($request, $response, $args)
+    {
+        if (! isset($this->linkDb[$args['id']])) {
+            throw new ApiLinkNotFoundException();
+        }
+        $index = index_url($this->ci['environment']);
+        $out = ApiUtils::formatLink($this->linkDb[$args['id']], $index);
+        return $response->withJson($out, 200, $this->jsonStyle);
+    }
 }